我试图将键和值复制到每个文档的字段。
文档示例“ db.ruj_users.find()”:
{
"_id" : ObjectId("52fd5f7ae1ab21223018121d"),
"email_notification" : "on",
"email_notification_interval" : "immediately",
"news_notification" : "on",
"notifs" : [
{}
],
}
我尝试过的代码:
db.ruj_users.find().snapshot().forEach(function(elemt) {
elemt.notifs.emailNotif = elemt.email_notification;
elemt.notifs.emailNotifIntrval = elemt.email_notification_interval;
elemt.notifs.newsNotif = elemt.news_notification;
db.ruj_users.notifs.update(
{$set:[
elemt
]
})
收到的错误:未捕获的异常:断言失败:需要一个对象
基本上,我想整理我的文档,所以我想将“ email_notifcations,email_notifications_interval和news_notification”复制到“ notifs”中,然后删除旧条目。
在查询集notifs
字段后面,并删除所有其他("email_notifcations"
,"email_notifications_interval"
和"news_notification"
),这是因为使用了update
没有$set
运算符的命令。
db.ruj_users.find().forEach(function (elem) {
var obj = {
emailNotif: elem.email_notification,
emailNotifIntrval: elem.email_notification_interval,
newsNotif: elem.news_notification,
};
db.ruj_users.update({_id: elem._id}, { notifs: obj });
})
确保您的文档没有其他任何字段(除外_id
),因为此字段也将被删除。在这种情况下,您应该使用$set
运算符重写查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句