我在Node中使用MongoDb(作为MongoJS的一部分) . 我也使用子文档并将ID分配给子文档 .
当我根据主文档进行查询时,它会返回整个文档,但是当我尝试根据其ID找到子文档时,它不会返回任何结果 . 在mongoose中,我已经为结果字段声明了一个单独的模式,它有自己的ID .
需要注意的是,我在数组中使用数组,用于结果字段 .
以下是此方案的控制台输出 .
>db.tests.find({"_id":ObjectId("56563e92c8be03ec1a341374")}).pretty();
"_id" : ObjectId("56563e92c8be03ec1a341374"),
"test" : 2,
"startAt" : ISODate("2015-11-25T23:04:50Z"),
"endedAt" : ISODate("2015-11-25T23:04:50Z"),
"results" : [
{
"_id" : ObjectId("56563e92c8be03ec1a341375"),
"second" : [
{
"sec" : 50,
"avg" : 40.6,
"grt" : 1.2
}
]
}
],
>db.tests.find({"_id":ObjectId("56563e92c8be03ec1a341375")}).pretty();
>
1 回答
您不能仅通过mongoDb中的ID搜索子文档 . 您必须始终从主文档开始,即...搜索具有“results”数组的文档,该数组包含您要查找的子文档:
如果您希望输出文档仅包含您要查找的子文档(不包括数组的其他子文档),您可以使用projection {“results . $”:1}:
它会给你这个输出: