以下是我的Mongodb的存储方式。我想更新我的集合中的每个文档,其中labId为401为true。
{
"_id" : ObjectId("5914a2ad6b2ee7b7c74ee150"),
"domainName" : "acts-corp.com.tw",
"userlevels" : [
{
"labId" : 104,
"userlevel" : true
},
{
"labId" : 401,
"userlevel" : false
},
{
"labId" : 202,
"userlevel" : true
},
{
"labId" : 102,
"userlevel" : true
}
],
"labconfigs" : [
ObjectId("5914a2ad6b2ee7b7c74ee14c"),
ObjectId("5914a2ad6b2ee7b7c74ee14d"),
ObjectId("5914a2ad6b2ee7b7c74ee14f"),
ObjectId("5914a2ad6b2ee7b7c74ee14e")
]
}
/* 2 */
{
"_id" : ObjectId("5914a2ad6b2ee7b7c74ee151"),
"domainName" : "adexus.cl",
"userlevels" : [
{
"labId" : 104,
"userlevel" : true
},
{
"labId" : 401,
"userlevel" : false
},
{
"labId" : 202,
"userlevel" : true
},
{
"labId" : 102,
"userlevel" : true
}
],
"labconfigs" : [
ObjectId("5914a2ad6b2ee7b7c74ee14c"),
ObjectId("5914a2ad6b2ee7b7c74ee14d"),
ObjectId("5914a2ad6b2ee7b7c74ee14f"),
ObjectId("5914a2ad6b2ee7b7c74ee14e")
]
}
所以我使用multi:true来通过mongoose命令行更新所有文档。这是我到目前为止的mongoose查询&它不能正常工作。
Domain.model.update( {'userlevels.labID': 401 }, {'$set': {'userlevels.$.userlevel': true}},{multi:true}, function(err, result) {
if (err) return res.apiError('database error', err);
resolve(result);
});