首页 > 解决方案 > 使用 gte 条件 MonggoDB 查询删除数组内的对象

问题描述

您好,我是 monggodb 查询的新手,我正在尝试使用 mongo3t 查询删除数组中的对象,该查询是从 2021 年 9 月 13 日开始的日期。

我目前的数据是:出勤率

{
    "_id": {
        "$oid": "6070b991d6231f8c205cb093"
    },
    "UserId": "5",
    "Ranges": [
        {
            "DateFrom": {
                "DateTime": {
                    "$date": "2021-09-12T00:00:00.000Z"
                },
                "Ticks": {
                    "$numberLong": "637536960000000000"
                }
            }
        },
        {
            "DateFrom": {
                "DateTime": {
                    "$date": "2021-09-13T00:00:00.000Z"
                },
                "Ticks": {
                    "$numberLong": "637536960000000000"
                }
            }
        },
        {
            "DateFrom": {
                "DateTime": {
                    "$date": "2021-09-15T00:00:00.000Z"
                },
                "Ticks": {
                    "$numberLong": "637536960000000000"
                }
            }
        }
    ]
}

这是我尝试执行的查询,

db.getCollection('attendance').update(
    { UserId: "5" },
    { $pull: { 'Ranges': { DateFrom: { DateTime: { $gte: new Date(2021, 09, 13) } } } } }
);

我的查询成功运行并显示消息“在 4 毫秒内更新了 1 条现有记录”,但在检查数据时没有任何反应。

标签: mongodbrobo3t

解决方案


这似乎没问题,只删除了最后一个元素。

询问

测试代码在这里

db.collection.update({
  UserId: "5"
},
{
  $pull: {
    Ranges: {
      "DateFrom.DateTime": {
        $gte: ISODate("2021-09-14T00:00:00.000Z")
      }
    }
  }
})

推荐阅读