我尝试在MongoDB中更新我的集合。
[ { _id: 5811cc62a50998a59193d4c0,
film:
{ id: '2',
title: 'Pirates of the Caribbean: Dead Men Tell No Tales ',
year: '2017',
quality: 'HDrip',
stars: 'John Depp, Orlando Bloom, Javier Bardem, Kaya Scodelario, Brenton Thwaites',
Show: true },
Show: false },
{ _id: 5811d693e4d24a0a69e8c12f,
film:
{ id: 5,
title: 'Doctor Strange',
year: '2016',
quality: 'Blu-ray',
stars: 'Benedict Cumberbatch, Chiwetel Ejiofor, Rachel McAdams, Benedict Wong, Mads Mikkelsen',
Show: true } },
{ _id: 5811d9e884efe15a708a8f1d,
film:
{ id: 6,
title: 'Hacksaw Ridge',
year: '2016',
quality: 'DVDrip',
stars: 'Teresa Palmer, Andrew Garfield, Vince Vaughn, Hugo Weaving, Sam Worthington',
Show: true } } ]
在这里,我想在任何阵列对象的“电影”中找到“显示”项目。
我写过:
db.wl.update({query: {_id: mongojs.ObjectId(req.body._id)},
update: {$set: {film.$.Show: req.body.newShow}}
})
Erlier我尝试'.0。'而不是'。$。'并且只是用点。 它仍然无法正常工作。
答案 0 :(得分:1)
首先,确保查询正确并返回要更新的对象。此外,update是一种异步方法,从您显示的代码中,您没有实现回调。应该是这样的:
db.wl.update({_id: mongojs.ObjectId(req.body._id)},
{$set: {"film.Show": req.body.newShow}}
, function(err, res) {
if (err){
console.warn(err.message);
}else{
console.log(res);
//do something
}
});)
答案 1 :(得分:1)
问题发生在db.wl.update
。以下是我如何解决它。
db.wl.update(
{_id: mongojs.ObjectId(req.body._id)},
{$set: {"film.Show": req.body.newShow}}
)
有了它,一切正常。抱歉愚蠢的问题。