在没有$运算符的MongoDB中使用子数组元素更新多个文档



我想用同一数组索引的另一个元素更新子阵列的元素。实际上,我所做的错误是列名称中的错字错误(评论,评论),因此想更新所有评论列。任何人都可以给我查询以更新此场景。

这是我的文档JSON

{
    "_id" : ObjectId("57a5df273c6c00d1378b456d"),   
    "review_time" : ISODate("2016-02-06T12:59:19.000Z"),
    "review" : "My name is Sandra P. and I am a satisfied customer. I've been working with eBrandz for a little more than two years and plan on keep doing so. They are always there whenever I have any concern and their approach is very professional. I would definitely recommend their services as I have seen great results.",
    "rating" : 5,
    "review_reply" : [ 
        {
            "author" : "http://new york.cylex usa.com/company/ebrandz inc 18441959.html",
            "reply_time" : "1969-12-31",
            "reviews" : "Sandra thanks for recommending ebrandz, appreciated."
        }, 
        {
            "author" : "http://new york.cylex usa.com/company/ebrandz inc 18441959.html",
            "reply_time" : "1969-12-31",
            "reviews" : "Sandra thanks for recommending ebrandz, appreciated.1"
        }, 
        {
            "author" : "http://new york.cylex usa.com/company/ebrandz inc 18441959.html",
            "reply_time" : "1969-12-31",
            "review" : "Sandra thanks for recommending ebrandz, appreciated22."
        }
    ],
}
    db.temp_reviews.find( {'review_reply.reviews' : {$exists : true}  } ).forEach( function (doc) {
          doc.review_reply.forEach(function (z) {               
        if(z.reviews){        
           z.review =   z.reviews
           delete z.reviews;
        }
          });
          db.temp_reviews.save(doc);
 });

您的接近,您只需要循环遍历数组,检查是否存在错误的字段,创建字段,删除错误的字段:

db.reviews.find({
    'review_reply.reviews': {
        $exists: true
    }
}).forEach(function(doc) {
    for (var i = 0; i < doc.review_reply.length; i++) {
        if (doc.review_reply[i].hasOwnProperty("reviews")) {
            doc.review_reply[i].review = doc.review_reply[i].reviews;
            delete doc.review_reply[i].reviews;
        }
    }
    db.reviews.save(doc);
});

最新更新