Javascript mongoDB:获取数组对象的字段值

Javascript mongoDB:获取数组对象的字段值,javascript,arrays,mongodb,Javascript,Arrays,Mongodb,我想获取对象中id为ePce6fBAHx9KeKjuM的字段30(在数组test中)的值 { "_id" : "nAwt3b76c24mZfqxz", "title" : "test", "test" : [ { "4" : false, "15" : false, "30" : false, "75" : true, "id" : "e

我想获取对象中id为ePce6fBAHx9KeKjuM的字段
30
(在数组
test
中)的值

{
    "_id" : "nAwt3b76c24mZfqxz",
    "title" : "test",
    "test" : [
        {
            "4" : false,
            "15" : false,
            "30" : false,
            "75" : true,
            "id" : "ePce6fBAHx9KeKjuM"
        }
    ]
}
所以这个结果将是
false

我试过类似的东西

var result = Collection.findOne({_id: 'nAwt3b76c24mZfqxz'}).test;

但这会给我完整的数组。但是我需要选定的对象,并且只需要该对象的一个选定字段(即
30
)。

test
只是一个JS数组。使用普通数组语法访问其元素:

var result = Collection.findOne({_id: 'nAwt3b76c24mZfqxz'}).test["30"];
编辑:

从zangw的答案来看,要用数组的1个元素检索整个对象,请使用投影。以下是您对测试元素本身的评论:

db.getCollection('a').find(
    // put your nested document's condition instead of `$exists`
    {_id: 'nAwt3b76c24mZfqxz', test:{ $elemMatch: { "30": {$exists: true}}}},
    // add other fields you like to retrieve, e.g. "title":1
    {"test.30":1}
)

test
只是一个JS数组。使用普通数组语法访问其元素:

var result = Collection.findOne({_id: 'nAwt3b76c24mZfqxz'}).test["30"];
编辑:

从zangw的答案来看,要用数组的1个元素检索整个对象,请使用投影。以下是您对测试元素本身的评论:

db.getCollection('a').find(
    // put your nested document's condition instead of `$exists`
    {_id: 'nAwt3b76c24mZfqxz', test:{ $elemMatch: { "30": {$exists: true}}}},
    // add other fields you like to retrieve, e.g. "title":1
    {"test.30":1}
)
试试这个

Collection.find({{_id: 'nAwt3b76c24mZfqxz'}}, {'test.30': 1, 'test.id': 1});
选择整个
测试
数组,如下所示,无
\u id

Collection.find({{_id: 'nAwt3b76c24mZfqxz'}}, {'test': 1, '_id': 0});
试试这个

Collection.find({{_id: 'nAwt3b76c24mZfqxz'}}, {'test.30': 1, 'test.id': 1});
选择整个
测试
数组,如下所示,无
\u id

Collection.find({{_id: 'nAwt3b76c24mZfqxz'}}, {'test': 1, '_id': 0});

但这并不考虑,测试是一个数组,并且我需要给定给定ID的对象的结果。有一个预期结果的例子是很好的,因为还不太清楚你想要检索什么。但是这并不认为,测试是一个数组,我需要具有给定id的对象的结果。最好有一个预期结果的示例,因为您试图检索的内容不太清楚。但我需要数组
test
(id=ePce6fBAHx9KeKjuM)的确切对象。@user3142695,添加{
test
:1}以选择此字段。。它符合你的要求吗?或者我遗漏了什么?我不太确定,但这只是选择了一般的字段。我必须检查这个数组中定义的对象。因此,如果没有具有给定id的对象,则结果应为空/假。但我需要数组
test
(id=ePce6fBAHx9KeKjuM)的确切对象。@user3142695,添加{
test
:1}以选择此字段。。它符合你的要求吗?或者我遗漏了什么?我不太确定,但这只是选择了一般的字段。我必须检查这个数组中定义的对象。因此,如果没有具有给定id的对象,则结果应为空/假。