MongoDB:如何获取嵌套对象的值?

时间:2016-07-04 19:56:21

标签: mongodb document

如果以下是文件

{ 'a': { 
        'b': ['a', 'x', 'b'],
        't': ['a', 'z', 'w', 't']
       }
}

我希望能够获得与嵌套对象关联的值。例如,在python中,我会print(dict_name['a']['t'])

我在下面的两个命令中尝试了find()findOne()

db.my_collection.find({}, { 'a.t': 1 })
db.my_collection.find({ 'a.t': {$exists: 'true} })

但他们没有返回正确的数据。

如何使用'a'作为密钥来查询文档,然后该文档获取与't'相关联的值,期望返回['a', 'z', 'w', 't']

2 个答案:

答案 0 :(得分:0)

您可以执行以下聚合:

db.collection.aggregate([
    {
        $project: {
            '_id': '$_id',
            't': '$a.t'
        }
    }
])

这应该可以满足您的需求。

这是 project 的链接,基本上将' a.t' 数组分配给名为&的新值#39; t' (这就是'':' $ a.t'几乎意味着)

答案 1 :(得分:0)

这个怎么样? :

db.my_collection.aggregate([{"$project":{"_id":"$_id", "t":"$a.t"}}]);

在此测试集上

{
        "_id" : ObjectId("577ba92187630c1a06c4bcac"),
        "a" : {
                "b" : [
                        1,
                        2
                ],
                "t" : [
                        2,
                        3
                ]
        }
}

它给了我以下结果 -

{ "_id" : ObjectId("577ba92187630c1a06c4bcac"), "t" : [ 2, 3 ] }