MongoDB节点驱动程序更新按ID过滤

时间:2016-08-26 15:00:26

标签: node.js mongodb

我在Node.JS中遇到MongoDB驱动程序的问题。 当尝试按ID更新多个用户时,MongoDB会返回错误:

{"name":"MongoError","message":"Argument must be a string"}

当省略新的ObjectId对象数组并使用简单的ID字符串时,它不返回任何错误,但标识符也不会被推送到实例数组。

userIdArray = userIdArray.map(id => new ObjectId(id));

this.collection.updateMany({
   _id: {$in: userIdArray}
}, {
   $push: {instances: identifier}
})

直接从Mongo Shell执行此updateMany函数时,使用ObjectIds数组,查询成功运行。

提前致谢。

这是完整的功能:

  this.collection.updateMany({
      _id: {$in: userIdArray}
   }, {
      $push: {instances: identifier}
   }).then((result) => {
      callback(null, 'successfully added instance to users.');
   }, (err) => {
      console.log(err);
      callback(err);
   }).catch((err) => {
      new Report().error(err);
   })

console.log(err)返回上面的错误

1 个答案:

答案 0 :(得分:1)

经过长时间的搜索,我发现了它。 我的应用程序使用多个MongoDB驱动程序安装(不同的node_modules文件夹),因为它的多租户架构在多个进程上运行。

我使用了一个安装的数据库连接和另一个的ObjectID函数,使用:require(' mongodb')。ObjectID;

我所要做的就是从连接数据库的同一个地方传递ObjectID函数。

希望将来能帮助其他人。