Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用node js更新mongodb中的文档_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 如何使用node js更新mongodb中的文档

Javascript 如何使用node js更新mongodb中的文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图使用node js更新mangodb数据库中的一些数据,但文档不会更新。我收到这个日志消息{n:0,nModified:0,ok:1} 这是我的密码: 我成功地连接到数据 const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/cinemas') .then(()=> console.log('connected to mongoDB....')) .cat

我试图使用node js更新mangodb数据库中的一些数据,但文档不会更新。我收到这个日志消息
{n:0,nModified:0,ok:1}
这是我的密码:

我成功地连接到数据

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/cinemas')
        .then(()=> console.log('connected to mongoDB....'))
        .catch(err => console.log('Could not connect to mongoDB because',err));
这是模式

const moviesSchema = new mongoose.Schema({
  title: String,
  acotrs:[String],
  genre: [String],
  date: {type: Date, default: Date.now},
  onCinema :Boolean
});
模型连接

const Movie = mongoose.model('Movie',movieSchema);
我可以搜索数据库没有问题,唯一的问题是更新功能,它不更新数据库。以下是函数:

async function updateMovie(id){
  const result = await Movie.update({_id: id},{
    $set:{
      title: 'New Movie',
      onCinema: false
    }
  });
  console.log(result);
}
updateMovie('5a68fdf95db93f6477053ddd'); 

我在控制台
{n:0,nModified:0,ok:1}
上得到这个日志,它告诉我没有任何更新。请帮忙。我做错了什么?

您提供的id是字符串类型,而_id是ObjectId,因此添加mongoose.Types.ObjectId(id)应该可以解决这个问题

    async function updateMovie(id){
  const result = await Movie.update({_id: mongoose.Types.ObjectId(id)},{
    $set:{
      "title": 'New Movie',
      "onCinema": false
    }
  });
  console.log(result);
}
updateMovie('5a68fdf95db93f6477053ddd');
试试这个:

`MongoClient.connect(url, { useNewUrlParser: true }, (err, client) => { 
     let queryId = { _id: this.id }; //Get the ID of the object
     let myObj = { 
         $set: { 
           name: 'Somename' //Whatever you want to change for that ID
         }
     var db = client.db("database_name");
     db.collection("collection_name").updateOne(queryId, myObj, (err, res) => {
         if (err) {
             console.log("not Updated");
         }
         else{
            console.log("Updated");
         }
     });
}`

如果你还有其他问题,请告诉我

{n:0}
表示数据库没有为您的查询找到任何匹配项,您确定有一个id为
5a68fdf95db93f6477053ddd
的文档吗?@AsafAviv是的,有一个id运行的文档
const result=wait Movie.findById('5a68fdf95db93f6477053ddd');控制台日志(结果)
它找到文档了吗?@asafavi从控制台没有日志,只有连接到数据库的消息该文档是否存在于
电影
集合中?我找到了,但仍然有相同的输出{n:0,nModified:0,ok:1}我刚刚编辑了答案,你试过这样吗$设置:{“标题”:“新电影”,“onCinema”:false}