作者合集
[
{
"_id":"asdasd2dqdfwefwe",
"books":[
"ISBN2e242",
"ISBNasdasdasd"
]
},
{
"_id":"asdasd2dqdfwefwe",
"books":[
"ISBN2e242",
"ISBN1111sdasd"
]
}
]
一季度。如何使用貓鼬查詢獲得所有唯一ISBN 的平面陣列?應該回傳['ISBN2e242','ISBNasdasdasd','ISBN1111sdasd']
如果有其他收藏書籍,
[
{"ISBN":"ISBN2e242", "title":"some book1"},
{"ISBN":"ISBN2e299", "title":"some book2"},
{"ISBN":"ISBN1111sdasd", "title":"some book3"},
{"ISBN":"ISBN2e242", "title":"some book4"},
{"ISBN":"ISBNasdasdasd", "title":"some book5"},
]
Q2。我怎樣才能只得到那些 ISBN 導致 Q1 的書?這兩個操作可以合并為 1 個查詢或聚合嗎?
uj5u.com熱心網友回復:
第一個問題:
使用$unwind解構陣列books和$group使用$addToSet,以避免重復的值。
yourAuthorCollection.aggregate([
{
"$unwind": "$books"
},
{
"$group": {
"_id": null,
"books": {
"$addToSet": "$books"
}
}
}
])
示例在這里
第二個問題:
添加一個$lookup這樣的階段:
{
"$lookup": {
"from": "books",
"localField": "books",
"foreignField": "ISBN",
"as": "books"
}
}
由于最后一個books輸出是一個包含所有 ISBN 的陣列,您可以使用books.
示例在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/353816.html
