MongoDB聚合在根中创建内部数组
Posted
技术标签:
【中文标题】MongoDB聚合在根中创建内部数组【英文标题】:MongoDB aggregation make inner array in root 【发布时间】:2021-08-03 13:06:38 【问题描述】:您好,我有两个集合人和部门。这些集合具有以下属性。
我想在文档的根目录中聚合并添加一个内部数组。请在下面检查我需要的结果:
人:
_id:ObjectID("5ff93b43535bera64de4"),
first_name: some name,
last_name : some name,
dept: department1,
部门:
dept_name: department1,
dept_descp : this is description,
books: [
book_name: book1,
subject: subject1,
,
book_name: book2,
subject: subject2,
,
]
到目前为止,我已经尝试过,但没有得到所需的结果
person.aggregate([
$match:
"_id": ObjectId("5ff93b43535bera64de4")
,
$lookup:
from: "department",
localField: "dept",
foreignField: "dept_name",
as: "ndept"
,
$project:"books": '$ndept.books'
])
我想得到的结果是
结果:
_id:ObjectID("5ff93b43535bera64de4"),
first_name: some name,
last_name : some name,
dept: department1,
books: [
book_name: book1,
subject: subject1,
,
book_name: book2,
subject: subject2,
]
【问题讨论】:
【参考方案1】:尝试$arrayElemAt
从数组中选择第一个元素
$addFields:
books: $arrayElemAt: ["$ndept.books", 0]
Playground
【讨论】:
以上是关于MongoDB聚合在根中创建内部数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 mongodb (node.js) 在集合中创建一个包含所有值的数组
在同一集合中创建对象的 mongodb 模式数组或创建新集合的更好方法保存引用