如何统计集合中数组字段的不重复的元素的个数?



  • 假设集合中的文档类似下面的结构:

    { "BookStoreId" : "sid001", "BookIDs" : [ "bid0001", "bid0002", "bid0003","bid0004" ] }

    { "BookStoreId" : "sid002", "BookIDs" : [ "bid0002", "bid0005" ] }

    如何统计BooksIDs的不重复的元素的个数?


  • Lv 1

    @x4_965be

    如果用 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({});

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待