使用mongodb中的子数组元素更新多个文档而不使用$ operator

时间:2017-03-10 07:36:11

标签: mongodb mongodb-query aggregation-framework

我想用同一数组索引的另一个元素更新子数组的元素。实际上我所做的错误是列名中的拼写错误(评论,评论)所以想要通过评论更新所有评论栏。任何人都可以给我查询来更新这个场景。

这是我的文件json

    library(ggplot2)
    library(plotly)
    library(reshape)
    library(Hmisc)

    x <- Seatbelts
    y <- as.matrix(x)
    rt <- rcorr(y)
    mtlr <- melt(rt$r)
    mtlp <- melt(rt$P) 
    gx <- ggplot(mtl, aes(X1, X2, fill = value)) + geom_tile() + 
      scale_fill_gradient(low = "cyan",  high = "red")
    ggplotly(gx)

2 个答案:

答案 0 :(得分:2)

    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);
 });

答案 1 :(得分:1)

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

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);
});