我想用同一数组索引的另一个元素更新子阵列的元素。实际上,我所做的错误是列名称中的错字错误(评论,评论),因此想更新所有评论列。任何人都可以给我查询以更新此场景。
这是我的文档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);
});