[英]MongoDB limit mapReduce on index key
是否可以限制輸入文檔,而不是限制輸入文檔的數量,而不僅限於索引鍵的映射。 喜歡:
{_id: 1, key: 5, smthFresh: "Cool"}
{_id: 2, key: 5, smthFresh: "Cool"}
{_id: 3, key: 5, smthFresh: "Cool"}
{_id: 4, key: 6, smthFresh: "Cool"}
{_id: 5, key: 6, smthFresh: "Cool"}
{_id: 6, key: 7, smthFresh: "Cool"}
現在,我想將mapReduce的輸入限制為兩個不同的鍵。 就像使所有文檔都匹配前兩個鍵(即5和6)一樣。這將返回5個文檔,而不是前2個。
關於mapreduce限制的MongoDB文檔:
限制數可選。 指定用於輸入地圖功能的最大文檔數。
有沒有一種方法,而無需先映射所有鍵,然后在第二個查詢中使用后兩個鍵呢?
要將mapReduce的輸入限制為兩個不同的鍵,即使所有文檔與前兩個鍵(即5和6)匹配,您可以在mapReduce命令中添加查詢字段以僅選擇鍵為5或6的那些文檔如下:
db.collection.mapReduce(
mapFunction,
reduceFunction,
{
"query": {
"key": { "$in": [5, 6] }
}
}
)
- 編輯 -
要獲取前兩個鍵,您可以使用distinct()
方法,該方法從集合中的所有文檔中返回字段key
的不同值,並使用JavaScript splice()
方法從數組中返回前兩個鍵:
var keys = db.test.distinct("key").slice(0, 2);
db.collection.mapReduce(
mapFunction,
reduceFunction,
{
"query": {
"key": { "$in": keys }
}
}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.