$ set无法使用mongodb update

时间:2016-11-05 08:55:19

标签: node.js 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('id here')。但它并没有更新任何东西。这是结果。

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

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

请帮帮我!谢谢!

1 个答案:

答案 0 :(得分:1)

不要沮丧,猫鼬没什么不对, 我认为你的问题是因为req.query.id是一个字符串 您需要先将字符串转换为ObjectId

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

阅读此内容,将我转换为对象I' d Convert string to ObjectID in MongoDB