我有一個文件,看起來像這樣:如何獲取一個字段的密鑰的文件中MongoDB中
{
'id': 123,
'somekey': {
'x': [],
'y': [],
'z': [],
}
}
我想要得到的結果爲:['x', 'y', 'z']
。什麼是相關的查詢來實現這一目標?
我有一個文件,看起來像這樣:如何獲取一個字段的密鑰的文件中MongoDB中
{
'id': 123,
'somekey': {
'x': [],
'y': [],
'z': [],
}
}
我想要得到的結果爲:['x', 'y', 'z']
。什麼是相關的查詢來實現這一目標?
相關查詢通過Map-Reduce。下面精簡操作將填充一個單獨的集合與somekey
子文檔的所有鍵爲_id
值:
var map = function() {
for (var key in this.somekey) {
emit(key, null);
}
},
reducer = function(key, stuff) { return null; }, /* or do reducer = function(key, stuff) { } since it's not doing anything */
mapreduce = db.runCommand({
"mapreduce": "collectionName",
"map": map,
"reduce": reducer,
"out": "someKeyCollectionKeys"
});
您可以通過所產生的集合運行不同得到的所有動態子文檔鍵列表:
db[mapreduce.result].distinct("_id")
輸出
[ "x", "y", "z" ]
可能使用'mapReduce'。 – styvane
mapReduce僅適用於文檔的鍵。但是在這種情況下,'x','y','z'是可變的 – harshatba
*'x','y','z'*是什麼意思?你能詳細說明一下嗎? – styvane