使用 gte 条件 MongoDB 查询删除数组内的对象
Query for remove object inside array using gte condition 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 条现有记录”,但在检查数据时没有任何反应。
这似乎没问题,只删除了最后一个元素。
查询
db.collection.update({
UserId: "5"
},
{
$pull: {
Ranges: {
"DateFrom.DateTime": {
$gte: ISODate("2021-09-14T00:00:00.000Z")
}
}
}
})
您可以使用更新管道
db.con
.collection("attendance")
.updateOne({ UserId:"5" },
[
{$project:{
UserId:1,
Ranges:{
$filter:{
input:"$Ranges",
as:"z",
cond:
{
$gte:["$$z.DateFrom.DateTime", new Date(2021, 09, 13)]
}
}
}
}}
]
)
你好,我是 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 条现有记录”,但在检查数据时没有任何反应。
这似乎没问题,只删除了最后一个元素。
查询
db.collection.update({
UserId: "5"
},
{
$pull: {
Ranges: {
"DateFrom.DateTime": {
$gte: ISODate("2021-09-14T00:00:00.000Z")
}
}
}
})
您可以使用更新管道
db.con
.collection("attendance")
.updateOne({ UserId:"5" },
[
{$project:{
UserId:1,
Ranges:{
$filter:{
input:"$Ranges",
as:"z",
cond:
{
$gte:["$$z.DateFrom.DateTime", new Date(2021, 09, 13)]
}
}
}
}}
]
)