簡體   English   中英

MongoDB限制mapReduce索引鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM