如果以下是文件
{ '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']
?
答案 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 ] }