【发布时间】:2017-01-05 10:22:44
【问题描述】:
我在 mongoDB 中有如下数据
{
"_id": ObjectId("57c40e405e62b1f02c445ccc"),
"sharedPersonId": ObjectId("570dec75cf30bf4c09679deb"),
"notificationDetails": [
{
"userId": "57443657ee5b5ccc30c4e6f8",
"userName": "Kevin",
"isRed": true
}
]
}
现在我想将isRed 值更新为false 如何为此编写查询。我尝试过类似下面的方法
var updateIsRedField = function(db, callback) {
db.collection('notifications').update({_id:notificationId},
{
$set: { "notificationDetails.$": {isRed: false}},
}, function(err, results) {
callback();
});
};
MongoClient.connect(config.database, function(err, db) {
assert.equal(null, err);
updateIsRedField(db, function() {
db.close();
});
return res.json({});
});
【问题讨论】:
-
更新时遇到任何错误?还是没有更新?
-
没有更新。
-
你能检查
db.collection('notifications').find({_id:notificationId})的输出吗?有没有记录? -
我得到了结果,因为上次它将整个
notificationDetails数组更新为isRed : false