我正在尝试将键和值复制到每个文档的字段中。
文档示例“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”中,然后删除旧条目。
答案 0 :(得分:0)
以下查询设置notifs
字段并删除所有其他字段("email_notifcations"
,"email_notifications_interval"
和"news_notification"
),因为使用了update
命令而没有$set
} operator。
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
运算符重写查询。