在键值对情况下,Mongodb在一个键上是不同的
我在mongodb中有下面的文档结构,我想从列在键值对情况下,Mongodb在一个键上是不同的,mongodb,Mongodb,我在mongodb中有下面的文档结构,我想从列customData 如果你看下面,我希望我的结果是:key1,key2,key3,key4 做 db.coll.distinct("customData") 将带来值,而不是键 { "_id":ObjectId("56c4da4f681ec51d32a4053d"), "accountUnique":7356464, "customData":{ "key1":1, "key2":2, } } {
customData
如果你看下面,我希望我的结果是:key1,key2,key3,key4
做
db.coll.distinct("customData")
将带来值,而不是键
{
"_id":ObjectId("56c4da4f681ec51d32a4053d"),
"accountUnique":7356464,
"customData":{
"key1":1,
"key2":2,
}
}
{
"_id":ObjectId("56c4da4f681ec51d32a4054d"),
"accountUnique":7356464,
"customData":{
"key3":1,
"key4":2,
}
}
可以使用执行此操作,因为您有动态子文档键,distinct方法不会为其返回结果 运行以下mapreduce操作将使用所有键作为
\u id
值填充一个单独的集合:
var myMapReduce = db.runCommand({
"mapreduce": "coll",
"map" : function() {
for (var key in this.customData) { emit(key, null); }
},
"reduce" : function() {},
"out": "coll_keys"
})
要获取所有动态键的列表,请在生成的集合上运行distinct:
db[myMapReduce.result].distinct("_id")
我会给你样本输出
["key1", "key2", "key3", "key4"]