mongodb - 带有嵌套集合的 Mongoose 聚合
问题描述
我有以下模式。
第一:AdditionalFieldSchema
const AdditionalFieldSchema = new Schema({
names: [
{
type: Schema.Types.ObjectId,
ref: "multiLanguageContent",
required: true
}
],
...
});
二:MultiLanguageContentSchema
const MultiLanguageContentSchema = new Schema({
value: {
type: String,
required: true
},
...
});
我有以下猫鼬聚合查询。目标是获取附加了附加字段的每个员工。
const employees = await Employee.aggregate([
{
$match: {
status: "active",
$nor: [
{ email: "blablabla" },
{ email: "blobloblo" }
]
}
},
{
$lookup: {
from: AdditionalField.collection.name,
let: { af_id: "$_id" },
pipeline: [{
$match: {
$expr: {
$and: [
{ $eq: ["$ownership", "$$af_id"] },
{ $eq: ["$status", "active"] },
{ $eq: ["$functionalType", "blablabla"] }
]
}
}
}],
as: "afs"
}
},
{ $unwind: "$afs" },
{ $unwind: "$afs.names" },
{
$group: {
_id: "$_id",
email: { $first: "$email" },
afs: {
$push: {
value: "$afs.value",
names: "$afs.names"
}
}
}
}
]);
我运行的查询来测试这个聚合函数。
query TestQuery {
testQuery
{
email
afs {
names {
value
}
value
}
}
}
我得到的结果。
"data": {
"testQuery": [
{
"email": "blablabla@test.com"
"afs": [
{
"names": [
{
"value": "Name 1"
}
],
"value": "Value 1"
},
{
"names": [
{
"value": "Name 2"
}
],
"value": "Value 2"
},
...
]
},
...
结果很好,我有我想要的数据。但我想在下面得到这样的结果
"data": {
"testQuery": [
{
"email": "blablabla@test.com",
"afs": [
{
"names": "Name 1",
"value": "Value 1"
},
{
"names": "Name 2",
"value": "Value 2"
},
...
]
},
...
似乎{ $unwind: "$afs.names" },
不起作用。有任何想法吗 ?谢谢,弗洛
解决方案
推荐阅读
- java - 如何从 Swagger 规范文件中获取“路径”
- python - 检查 Python Pint 单位尺寸之间的差异包括 1 / 体积
- awk - awk 函数的输出不正确
- c++ - 在终端中为 ncurses 启用鼠标事件
- google-chrome - 如何限制 Chromium GPU 进程系统内存使用量?
- azure - Azure 自动化 - 无法停止 Azure Function App
- python - 使用 requests.get 后,我无法 g
- javascript - 提高在浏览器控制台中运行的 js 机器人的执行速度的方法
- python - Django AttributeError:导入表单类
- html - 如果我选中了所有兄弟复选框,父复选框将自动选中