【发布时间】:2023-03-15 00:03:01
【问题描述】:
假设我在bookUser 集合中有文档:
{
'authored_by':ObjectId('asdfs'),
'general':{'address':{'city':'XYZ'}}
}
{
'authored_by':ObjectId('jkfo21'),
'general':{'address':{'city':'YYZ'}}
}
和另一个收集中心_数据为:
{
'authored_by': ObjectId('asdfs'),
'books':{'name':'alpha'},
'book_type':'adventure'
'general':{'address':{'city':'ABC'}}
}
{
'authored_by': ObjectId('jkfo21'),
'books':{'name':'sigma'},
'book_type':'drama'
'general':{}
}
我想获取所有对象并从center_data 集合中获取详细信息:
样品 O/P:
[
{
'authored_by':ObjectId('asdfs'),
'general':{'address':{'city':'XYZ'}},
'books':[
{
'address': 'ABC'
}
]
},
{
'authored_by':ObjectId('jkfo21'),
'general':{'address':{'city':'YYZ'}},
'books':[
{
'address': ''
}
]
}
]
为此,我尝试了::
db.bookUser.aggregate([
{
$lookup: {
from: "center_data",
localField: "_id",
foreignField: "authored_by",
as: "books"
}
},
{
$project: {
books: {
$filter: {
input: "$books",
as: "book",
cond: {
$and: [
{
$eq: [
"book_type",
"adventure"
]
}
]
}
}
}
}
}
])
但是在查询中,它给出了一个空数组。我想从bookUser 集合中获取所有文档并从center_data 集合中获取地址,如果 book_type 不是冒险,则将地址填充为空。
如果有人需要更多信息,请告诉我。
【问题讨论】:
标签: mongodb mongoose aggregation-framework