代码之家  ›  专栏  ›  技术社区  ›  Harsh Patel Sam

过滤和更新数据

  •  0
  • Harsh Patel Sam  · 技术社区  · 7 年前
    {
        "_id": "5c0a17013d8ca91bf4ee7885",
        "fixed": [
          {
            "from": "1970-01-01",
            "to": "1970-01-02",
            "isCompleted": true
          },
          {
            "from": "2017-04-18",
            "to": "2017-04-23",
            "isCompleted": false
          },
          {
            "from": "2018-01-29",
            "to": "2018-01-30",
            "isCompleted": false
          }
        ]
      },
      {
        "_id": "5c0a17013d8ca91bf4ee7886",
        "fixed": [
          {
            "from": "1970-01-01",
            "to": "1970-01-02",
            "isCompleted": true
          },
          {
            "from": "2017-04-18",
            "to": "2017-04-23",
            "isCompleted": false
          },
          {
            "from": "2018-01-29",
            "to": "2018-01-30",
            "isCompleted": false
          }
        ]
      },
      {
        "_id": "5c0a17013d8ca91bf4ee7887",
        "fixed": [
          {
            "from": "2019-04-15",
            "to": "2019-04-25",
            "isCompleted": false
          },
          {
            "from": "2017-04-18",
            "to": "2017-04-23",
            "isCompleted": false
          },
          {
            "from": "2018-01-29",
            "to": "2018-01-30",
            "isCompleted": false
          }
        ]
      }
    

    我的数据库中有这种类型的数据,我想将isCompleted更新为false。使用如下日期的过滤器:

    find({
      fix: {
        $not: {
          $elemMatch: {
            from: {
              $lt: "1970-01-02"
            },
            to: {
              $gt: "1970-01-01"
            },
            "isCompleted": true
          }
        }
      }
    })
    

    通过这个查询,我得到了一个对象,但是我怎样才能将isCompleted设置为false,给出的日期是1970-01-01和1970-01-02

    以下是工作示例: https://mongoplayground.net/p/WIoZZ5k0Myu

    1 回复  |  直到 7 年前
        1
  •  0
  •   kRiZ    7 年前

    FindModify可以解决你的问题。下面只是一个伪代码。

    db.collection.findAndModify({
        query: {  from: {$lt: "1970-01-02"}  },
        update: { isCompleted: true },
        upsert: true
    })