Mongodb mapreduce函數不提供任何方式來跳過像查找函數那樣的數據庫記錄。它具有查詢功能,排序&限制選項。但我想從數據庫中跳過一些記錄,但我沒有辦法。請提供解決方案。mongodb mapreduce函數不提供跳過功能,是他們對此的任何解決方案嗎?
在此先感謝。
Mongodb mapreduce函數不提供任何方式來跳過像查找函數那樣的數據庫記錄。它具有查詢功能,排序&限制選項。但我想從數據庫中跳過一些記錄,但我沒有辦法。請提供解決方案。mongodb mapreduce函數不提供跳過功能,是他們對此的任何解決方案嗎?
在此先感謝。
理想情況下,一個結構良好的map-reduce查詢將允許您跳過集合中的特定文檔。
或者,正如塞爾吉奧指出的那樣,您可以簡單地不在map()中發出特定的文檔。使用範圍來定義全局計數器變量是限制發射到指定文檔範圍的一種方法。舉個例子,跳過第20個文檔由對象ID進行排序(因此,通過插入時間排序):
db.collection_name.mapReduce(map, reduce, {out: example_output, sort: {id:-1}, scope: "var counter=0")};
地圖功能:
function(){
counter ++;
if (counter > 20){
emit(key, value);
}
}
我不知道,因爲哪個版本此功能是可用的,但肯定在MongoDB中2.6 mapReduce()
function provides query
parameter:
query
:文件可選。使用查詢運算符指定選擇標準,以確定輸入到地圖 函數的文檔。
例
考慮下面的地圖,減少對包含以下原型文檔的集合訂單的操作:
{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 25,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
使用執行的訂單收集的地圖,減少操作mapFunction2,reduceFunction2和finalizeFunction2函數。
db.orders.mapReduce(mapFunction2,
reduceFunction2,
{
out: { merge: "map_reduce_example" },
query: { ord_date:
{ $gt: new Date('01/01/2012') }
},
finalize: finalizeFunction2
}
)
此操作使用查詢字段只選擇ord_date
這些文件不是new Date(01/01/2012)
更大。然後它將結果輸出到集合map_reduce_example
。如果map_reduce_example
集合已經存在,則該操作將合併現有內容與此map-reduce操作的結果。
謝謝你,這是我想要的。 –