如何统计集合中数组字段的不重复的元素的个数?
-
假设集合中的文档类似下面的结构:
{ "BookStoreId" : "sid001", "BookIDs" : [ "bid0001", "bid0002", "bid0003","bid0004" ] }
{ "BookStoreId" : "sid002", "BookIDs" : [ "bid0002", "bid0005" ] }
如何统计BooksIDs的不重复的元素的个数?
-
如果用 map reduce 可以這樣做
db.b.insert({ "BookStoreId" : "sid001", "BookIDs" : [ "bid0001", "bid0002", "bid0003","bid0004" ] });
db.b.insert({ "BookStoreId" : "sid002", "BookIDs" : [ "bid0002", "bid0005" ] });
db.b.mapReduce(
function() {
var s = new Set(this.BookIDs);
emit(this.BookStoreId, s.size);
},
function(key,values) {
return Array.sum(values);
},
{
out: "a_result", // 運作結果的 Collection
query: {}
}
);
db.a_result.find({});