$ set在mongodb更新中不起作用

所以即时通讯工作与nodeJSmongoDB 。 即时通讯在更新一个集合时遇到问题,自从我开始工作一个星期以来,这真的让我很头疼。 所以这是我的样本集合

 { "_id": ObjectId('51299sdfasdf') //this is just a sample Id "names": [ "NameA", "NameB", "NameC" ], "names_id": [ ObjectId('asdfasdf1312'), ObjectId('12sda123123a'), ObjectId('asdf1212123a') ], "user_alias": "SampleA" } 

那么这是我的脚本

 var mongoose = require('mongoose'); var model = mongoose.model('Sample'); model.update( { _id: req.query._id }, { $set: { names: namesArray, //this are set of names ex; ['name1', 'name2'] names_id: namesIdArray //this are set of ids ex: [ ObjectId('sgsdfgsd'), ObjectId('asdfasdfadf') }, }, function(err, results) { if(err) res.status(500).send(err); console.log(results); } ); 

我知道我的代码是正确的。 在names_id数组中,我指定所有的对象ID,像这样mongoose.mongo.ObjectId mongoose.mongo.ObjectId('id here') 。 但它不更新任何东西。 这是结果。

 { ok: 1, nModified: 0, n: 1 } 

这里有什么问题? 这是因为版本? 我的mongoose版本是2.15.8

请帮帮我! 谢谢!

不要太沮丧,mongoose没有什么问题,我想你的问题是因为req.query.id是一个string你需要先将string转换为ObjectId

文档没有更新,因为它没有find任何其他原因只是将_id转换为对象ID的文档

阅读此转换我想对象我想在MongoDB中将string转换为ObjectID