我在 MongoDB 中的命令列有點問題。這是我的一份檔案的樣子:
{
"id": "6249c4eb85a7563e673b4360",
"collection": {
"id": "6244099cb9ebc40007ac2ce3"
},
"characters": [
{
"id": "6244074ab9ebc40007ac2cf9"
},
{
"id": "6244074ab9ebc40007ac2ce1"
}
],
}
然后,在 MongoDB shell 中,我嘗試根據他們的標準檢索一些書籍,這是一個示例:
db.comic.find({
characters: {
$elemMatch:{
_id: {
$in: [
ObjectId("6244074ab9ebc40007ac2ce5")
]
}
}
},
collection: {
$elemMatch:{
_id: {
$in: [
ObjectId("6244099cb9ebc40007ac2cfb")
]
}
}
}
}).pretty()
如果我洗掉“收藏”部分,我會找到與角色相關的書籍。但是,如果我把“收藏”部分放回去,我就沒有結果。我認為這與“集合”不是陣列這一事實有關,但我不知道如何解決這個問題,知道目標是在搜索中有幾個集合,因此“$elemMatch”和“美元”。
提前感謝您的幫助,祝您有美好的一天。
uj5u.com熱心網友回復:
您需要使用collection._id而不是collection:{$elemMatch:{_id因為$elemMatch在陣列中查找物件。
因此,您的查詢應如下所示:
db.comic.find({
characters: {
$elemMatch:{
_id: {
$in: [
ObjectId("6244074ab9ebc40007ac2ce5")
]
}
}
},
"collection._id": {
$in: [ObjectId("6244099cb9ebc40007ac2cfb")]
}
}).pretty()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462453.html
