mongoDB - 查找特定结果,文档以不同方式嵌套
mongoDB - find a specific result, with a document nested in different ways
我在 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()
如果我删除“collection”部分,我会找到与角色相关的书籍。但是,如果我把“collection”部分放回去,我没有结果。我认为这与“collection”不是数组有关,但我不知道如何解决这个问题,知道目标是在搜索中有几个collection,因此“$elemMatch”和“$in”。
在此先感谢您的帮助,祝您有愉快的一天。
您需要使用 collection._id
而不是 collection:{$elemMatch:{_id
,因为 $elemMatch
用于在数组中查找对象。
因此您的查询应如下所示:
db.comic.find({
characters: {
$elemMatch:{
_id: {
$in: [
ObjectId("6244074ab9ebc40007ac2ce5")
]
}
}
},
"collection._id": {
$in: [ObjectId("6244099cb9ebc40007ac2cfb")]
}
}).pretty()
我在 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()
如果我删除“collection”部分,我会找到与角色相关的书籍。但是,如果我把“collection”部分放回去,我没有结果。我认为这与“collection”不是数组有关,但我不知道如何解决这个问题,知道目标是在搜索中有几个collection,因此“$elemMatch”和“$in”。
在此先感谢您的帮助,祝您有愉快的一天。
您需要使用 collection._id
而不是 collection:{$elemMatch:{_id
,因为 $elemMatch
用于在数组中查找对象。
因此您的查询应如下所示:
db.comic.find({
characters: {
$elemMatch:{
_id: {
$in: [
ObjectId("6244074ab9ebc40007ac2ce5")
]
}
}
},
"collection._id": {
$in: [ObjectId("6244099cb9ebc40007ac2cfb")]
}
}).pretty()