我是MongoDB的新手。
我的收藏是authors
和books
。它的多对多关联
我的作者收藏
[{
"id": "11",
"name": "Sam",
"age": 40
},
{
"id": "12",
"name": "Jack",
"age": 20
},
{
"id": "22",
"name": "Smith",
"age": 35
}]
我的书集
[{
"id": "123",
"title": "Hello World",
"price": 200,
"authors":["Sam","Jack"]
},
{
"id": "34",
"title": "Good Day",
"price": 100,
"authors":["Smith"]
}]
这是我的邮递员结果。
[{
"authors": [
{
"id": "11",
"name": "Sam",
"age": 40,
},
{
"id": "12",
"name": "Jack",
"age": 20,
}
],
"id": "123",
"title": "Hello World",
"price": 200,
}]
我将查询放在mongo shell中以找到books
,但结果仅显示书的详细信息而未显示authors
(子条目)。
如何在mongo shell命令中获取包含作者条目的书(例如邮递员结果)。
谢谢。
答案 0 :(得分:0)
尝试以下代码:
<db>.books.aggregate([
{
'$project': {
'id': 1,
'title': 1,
'price': 1,
'authors': 1,
'numberOfAuthors': {
'$cond': {
'if': {
'$isArray': '$authors'
},
'then': {
'$size': '$authors'
},
'else': 0
}
}
}
}, {
'$match': {
'numberOfAuthors': {
'$eq': 2
}
}
}, {
'$lookup': {
'from': 'authors',
'localField': 'authors',
'foreignField': 'name',
'as': 'authors'
}
}
])
使用投影,然后在查找之前使用匹配。