MongoDB - String到ObjectID并创建新集合

时间:2017-04-04 08:13:45

标签: mongodb aggregation-framework mongodb-shell

db.firmalar.find().forEach(function(obj) {
    for( var i = 0; i < obj.osgbIdleri.length; i++){ //ObjectId ARRAY
        obj.osgbIdleri[i] = ObjectId(obj.osgbIdleri[i]);
    }  
  //out:result (firmaId.id & firmaId.osgbIdleri.id(ObjectId))
});

我想保存字符串字段&#34; obj.osgbIdleri&#34;在&#34; Firmalar&#34;中的每个文件中;集合作为ObjectId字段。我想我可以使用&#34;聚合&#34;来做到这一点。但是当使用&#34; aggregation&#34;时,我无法返回foreach中的每个对象。我想创建&#34; firmaId.id&#34;和&#34; firmaId.osgbIdleri.id(ObjectID)&#34;在创建新系列时。

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

db.firmalar.mapReduce( 
       function() { 
           for( var i = 0; i < this.osgbIdleri.length; i++){
                this.osgbIdleri[i] = ObjectId(this.osgbIdleri[i]);
            }  
           emit(this._id, this.osgbIdleri); }, 

       function(key, values) {return value}, {  
          query:{},  
          out:"firmalarId" 
       }
    ).find()