gpt4 book ai didi

MongoDb:查询不从数组中提取项目 - 为什么?

转载 作者:可可西里 更新时间:2023-11-01 09:59:18 24 4
gpt4 key购买 nike

下面查询的目的是从 locs 数组中提取项目,其中 x=2 和 y=9。但是,具有这些值的项目在此查询后仍保留在数组中。

 db.myCollection.update(
{ }, //All records
{ $pull: { 'locs' : { $elemMatch : {'x' : 2 , 'y' : 9 } } } }
)

谁能告诉我为什么它不起作用?

编辑:示例文档:

{
"_id" : ObjectId("55555555555"),
"locs" : [{
"x" : 2,
"y" : 9
}],
"v" : 99
}

最佳答案

一般来说,$pull 并不是这样工作的。它删除“数组中的一个值”(http://docs.mongodb.org/manual/reference/operator/pull/)。您不能在此处使用 $elemMatch,但也不是必须的。

因此,如果您有一个如下所示的文档:

{
'title': 'example',
'locs': [
{ x: 2, y: 12 },
{ x: 7, y: 9 },
{ x: 2, y: 9 },
]
}

以下应该删除您的 x:2/y:9 值对:

db.so.update(
{},
{ $pull: { 'locs' : { 'x' : 2 , 'y' : 9 } } }
);

然后有:

{
'title': 'example',
'locs': [
{ x: 2, y: 12 },
{ x: 7, y: 9 },
]
}

关于MongoDb:查询不从数组中提取项目 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com