Arrays 为什么我能';无法获取完整的文档表单数组?
我将此文档保存在我的收藏中:Arrays 为什么我能';无法获取完整的文档表单数组?,arrays,mongodb,mongodb-query,Arrays,Mongodb,Mongodb Query,我将此文档保存在我的收藏中: { "_id" : ObjectId("5707b95b8415b224a48a0b2d"), "companyId" : ObjectId("570269639caabe24e4e4043e"), "descriptions" : [ { "id" : ObjectId("5707b95b8415b224a48a0b2a"), "description" : "test" },
{ "_id" : ObjectId("5707b95b8415b224a48a0b2d"),
"companyId" : ObjectId("570269639caabe24e4e4043e"),
"descriptions" : [
{ "id" : ObjectId("5707b95b8415b224a48a0b2a"), "description" : "test" },
{ "id" : ObjectId("570cd8164fff3a20f88c0dc9"), "description" : "test1" },
{ "id" : ObjectId("570ce6ba4fff3a052c8c570f"), "description" : "etr" },
{ "id" : ObjectId("570cf1b64fff3a1a14d71716"), "description" : "43" },
{ "id" : ObjectId("570cf1b64fff3a1a14d71717"), "description" : "43" },
{ "id" : ObjectId("570cf1b64fff3a1a14d71719"), "description" : "345" }
],
"options" : [
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"), "description" : "test" },
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"), "description" : "test1" }
]
}
现在我试图从选项
数组中获取与描述ID
匹配的对象,下面是我的操作方法
db.CustomFields.find({companyId: ObjectId("570269639caabe24e4e4043e")},{"options.descriptionId": ObjectId("5707b95b8415b224a48a0b2a")})
但是结果只包含descriptionId
——缺少description
属性
结果如下所示:
{ "_id" : ObjectId("5707b95b8415b224a48a0b2d"),
"options" : [
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a") },
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a") }
]
}
为什么我的查询没有从数组返回完整文档,而只是其中的一部分?你能推我一下吗
编辑
这就是我期望从查询中得到的结果
{ "_id" : ObjectId("5707b95b8415b224a48a0b2d"),
"options" : [
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a", "description" : "test") },
{ "descriptionId" : ObjectId("5707b95b8415b224a48a0b2a", "description" : "test1") }
]
}
试试这个
db.CustomFields.find({companyId:ObjectId(“570269639CAABE24E4043E”),“options.descriptionId”:ObjectId(“5707b95b8415b224a48a0b2a”)})试试这个
db.CustomFields.find({companyId:ObjectId(“570269639CAABE24E4043E”),“options.descriptionId”:ObjectId(“5707b95b8415b224a48a0b2a”)})您需要将另一个查询包含在
选项中。descriptionId“
与companyId
查询一起,并使用投影返回所需的数组
以下说明:
db.customFields.find(
{
"companyId": ObjectId("570269639caabe24e4e4043e"),
"options.descriptionId": ObjectId("5707b95b8415b224a48a0b2a")
},
{ "options": 1 }
);
输出
{
"_id" : ObjectId("5707b95b8415b224a48a0b2d"),
"options" : [
{
"descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"),
"description" : "test"
},
{
"descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"),
"description" : "test1"
}
]
}
您需要将另一个查询与
“options.descriptionId”
一起包含在公司ID
查询中,并使用投影返回所需的数组
以下说明:
db.customFields.find(
{
"companyId": ObjectId("570269639caabe24e4e4043e"),
"options.descriptionId": ObjectId("5707b95b8415b224a48a0b2a")
},
{ "options": 1 }
);
输出
{
"_id" : ObjectId("5707b95b8415b224a48a0b2d"),
"options" : [
{
"descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"),
"description" : "test"
},
{
"descriptionId" : ObjectId("5707b95b8415b224a48a0b2a"),
"description" : "test1"
}
]
}
这将返回整个文档。。。我只需要选项数组你问“为什么我的查询没有返回完整文档”…所以我给出了这个…让我再次检查…你想在结果中只使用选项数组吗?这会返回整个文档…我只需要选项数组你问“为什么我的查询没有返回完整文档”…所以我给出了这个…让我再次检查。。。您希望结果中只包含选项数组吗?但是,如何一次获取所有匹配的文档?您能否编辑您的问题以显示您的预期结果?@Slim我误解了您的问题。你所需要的只是在
选项
字段上投影,所以我更新了我的答案。哇!我知道我错过了一个很小的部分!非常感谢你的帮助!你节省了我很多时间!但是,我如何一次获得所有匹配的文档?你能编辑你的问题以显示你的预期结果吗?@Slim我误解了你的问题。你所需要的只是在选项
字段上投影,所以我更新了我的答案。哇!我知道我错过了一个很小的部分!非常感谢你的帮助!你节省了我很多时间!