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我误解了你的问题。你所需要的只是在
选项
字段上投影,所以我更新了我的答案。哇!我知道我错过了一个很小的部分!非常感谢你的帮助!你节省了我很多时间!