node.js - MongoDb 查询匹配并删除数组中的元素?

标签 node.js mongodb

我想要查询并从存储设施 ID 数组的设施中删除一个 ID。 我的架构。

 {
        "_id" : ObjectId("zzzzzzzzzzzzzzzzzzzzz"),
        "account" : {
            "createdOn" : ISODate("2016-02-19T10:31:32.918Z"),

        },
        "appointments" : [],
        "facilities" : [ 
            ObjectId("vvvvvvvvvvvvvvvvvvvvvvvvvvvv"),
            ObjectId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx")

我尝试了这个,但它删除了整个架构?

  this.remove({ '_id': id, facilities :  { "$in" : [facilityId]} })

此处,id 是该架构的 ID,facilityId 是设施的 ID。任何帮助将不胜感激?

最佳答案

您想保留文档并从“facilities”数组中删除一个元素吗?是这个吗?

如果是这样,您不想“删除”,而是“更新”您的文档。

它会以某种方式进行:

update(
  {
    "_id": id
  },
  {
    $pullAll:
    {
      "facilities": [facilityId]
    }
  }
)

PS:我假设当你想要修改它时,你已经有了你的文档ID。如果没有,您可以通过“设施”字段进行查询(使用 $in 运算符,就像您所做的那样),在这种情况下,您最好在其上有一个索引。正如其他答案提到的那样,您也可以在查询字段上有一个空文档,但这往往表现很差。

关于node.js - MongoDb 查询匹配并删除数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35555167/

相关文章:

javascript - 如何在函数中执行异步工作,然后在完成后从该函数返回一个值?

javascript - node.js 获取被拒绝的 Promise 的构造位置

node.js - Async.Map 的回调不起作用

javascript - 更新 Mongoose 中的依赖日期字段

java - MongoDB 从 BasicDBObject 获取日期

javascript - Node.js:处理多个 session

javascript - 使用 Heroku 部署 Node.js 应用程序时出现公共(public)目录问题

node.js - 在compoundjs初始化期间如何从jugglingdb适配器获取 native mongodb客户端?

node.js - 如何在 Mongoose 的对象数组中查找和删除特定对象

node.js - 使用 Mongoose 保存身份验证凭据时出现问题