我想在MongoDB中执行此SQL语句选择不同的多个领域:使用MongoDB的映射减少
SELECT DISTINCT book,author from library
到目前为止,MongoDB的DISTINCT只支持一个场在一个时间。对于多个字段,我们必须使用GROUP命令或map-reduce。
我用Google搜索的方式来使用GROUP命令:
db.library.group({
key: {book:1, author:1},
reduce: function(obj, prev) { if (!obj.hasOwnProperty("key")) {
prev.book = obj.book;
prev.author = obj.author;
}},
initial: { }
});
但是这种方法只支持多达10000项。任何人都知道如何使用map reduce来解决这个问题?
非常感谢。它运作良好。但是我仍然很难找到'{exists:1}'的功能。根据我的理解,这是每种独特价值的标识符。但我仍然觉得很奇怪。 –
通常情况下,这个值比较复杂,有几个字段。你可以简化它只发出一个值1,但是“{存在:1}”更加自我解释,并且在你希望稍后添加更多字段时会更容易。 –