【发布时间】:2016-01-30 02:22:15
【问题描述】:
我希望有人能对我遇到的这个问题有所了解,这让我发疯了,过去三天我一直在学习越来越多的关于 mongoDB 的知识,但仍然无法弄清楚这个简单的查询.
我需要做的是获取包含“carId”=“3C”的对象。
换句话说,我希望查询返回的对象是:
{
"carId" : "3C",
"_id" : ObjectId("51273329b64f07a40ef1c15e")
}
这是数据集(汽车):
{
"_id" : ObjectId("56223329b64f07a40ef1c15c"),
"username" : "john",
"email" : "john@john.com",
"accounts" : [
{
"_id" : ObjectId("56322329b61f07a40ef1c15d"),
"cars" : [
{
"carId" : "6A",
"_id" : ObjectId("56323329b64f07a40ef1c15e")
},
{
"carId" : "6B",
"_id" : ObjectId("56323329b64f07a40ef1c15e")
}
]
}
]
},
{
"_id" : ObjectId("56223125b64f07a40ef1c15c"),
"username" : "paul",
"email" : "paul@paul.com",
"accounts" : [
{
"_id" : ObjectId("5154729b61f07a40ef1c15d"),
"cars" : [
{
"carId" : "5B",
"_id" : ObjectId("56323329854f07a40ef1c15e")
}
]
},
{
"_id" : ObjectId("56322117b61f07a40ef1c15d"),
"cars" : [
{
"carId" : "6G",
"_id" : ObjectId("51212929b64f07a40ef1c15e")
},
{
"carId" : "3C",
"_id" : ObjectId("51273329b64f07a40ef1c15e")
},
{
"carId" : "4N",
"_id" : ObjectId("51241279b64f07a40ef1c15e")
}
]
}
]
}
请注意,我有两个嵌套数组,显然 MongoDb 在处理具有深度数组的投影时缺乏。 $ 运算符只能在投影中使用一次;离开时不知道如何完成这个简单的任务。
所以我想再次找到--only-- 具有“carId”的文档:“3C”并且只返回包含“carId”的直接obj:“3C”。但不是父对象。
任何帮助将不胜感激。可能使用直接的 MongoDb 或 Mongoose。猫鼬是首选。
作为参考,我已经涵盖了这些其他相关问题无法弄清楚。
Updating a deep record in MongoDb
How to Update Multiple Array Elements in mongodb
希望在未来,这个问题和你的解决方案能帮助到其他人。
【问题讨论】:
标签: arrays mongodb mongoose mongodb-query