我在mongodb中有一个查询,尝试了很多解决方案,但仍然没有找到它的工作。任何帮助都将不胜感激。你知道吗
如何在文档中找到所有名为“channel”的键?你知道吗
db.clients.find({"_id": 69})
{
"_id" : 69,
"configs" : {
"GOOGLE" : {
"drid" : "1246ABCD",
"adproviders" : {
"adult" : [
{
"type" : "landing",
"adprovider" : "abc123",
"channel" : "abc456"
},
{
"type" : "search",
"adprovider" : "xyz123",
"channel" : "xyz456"
}
],
"nonadult" : [
{
"type" : "landing",
"adprovider" : "pqr123",
"channel" : "pqr456"
},
{
"type" : "search",
"adprovider" : "lmn123",
"channel" : "lmn456"
}
]
}
},
"channel" : "ABC786",
"_cls" : "ClientGoogleDoc"
}
}
正在尝试查找名为channel的键
db.clients.find({"_id": 69, "channel": true})
期望值:
{"channels": ["abc456", "xyz456", "ABC786", "xyz456", "pqr456", "lmn456", ...]}
可以使用
$project
mongodb操作符仅获取特定键的值。查看http://docs.mongodb.org/manual/reference/operator/aggregation/project/上的文档据我所知,您必须自己使用python递归遍历字典,以便构建上面所需的列表:
输出:
但是,使用一个名为
projections
的东西,您可以得到接近您想要的结果(但不是真的,因为您必须手动指定所有通道):退货:
如果您真的想玩,可以编写一个
generator
函数来生成给定字典中的所有键,不管它有多深:输出:
相关问题 更多 >
编程相关推荐