gpt4 book ai didi

具有空值的 MongoDb 查询数组

转载 作者:IT老高 更新时间:2023-10-28 13:17:28 30 4
gpt4 key购买 nike

我的收藏中有一些看起来像这样的对象:

{ MyArray:[null, "some value", null] }

我想查询那些具有空值作为数组元素的对象。查询

db.collection.find({"MyArray":null})

不起作用,它似乎只找到 MyArray 为空的对象,例如

{ MyArray:null }

我需要如何定义我的查询?

编辑:请看我的一个真实对象:

{
"_id" : BinData(3,"ch9PrWveqU6niB6FGVhIOg=="),
"PeerGroup" : "male",
"ProductId" : BinData(3,"weRiKOtXEUSDZHkGHLcwzw=="),
"CategoryIds" : [
BinData(3,"BXzpwVQozECLaPkJy26t6Q=="),
BinData(3,"ox303ZeM50KelvoUbPBJ8Q=="),
BinData(3,"26ziaY+G9UKMyjmtVkkhcg=="),
BinData(3,"D2X8vObte0eJHNcDfp2HBw==")
],
"ShopId" : BinData(3,"ZdfPmrlKR0GkLPC4djJuKw=="),
"BrandId" : BinData(3,"kCHyuyLvgECxPF1nxwr7qQ=="),
"Created" : ISODate("2012-08-24T07:42:12.416Z"),
"LastActivity" : ISODate("2013-01-14T19:38:11.776Z"),
"Price" : 129.9,
"Sale" : false,
"Rating" : 11.057340703605368,
"RatingTimed" : 0.05670431130054035,
"Available" : null,
"FreeDelivery" : null,
"Attrs" : [
null,
null,
null,
null
]
}

然后我查询:

db.collection.find({"Attrs":null})

没有结果。

最佳答案

要查找包含数组的文档,请运行具有空元素的文档:

db.collection.find({"keyWithArray":{$elemMatch:{"$in":[null], "$exists":true}}})

根据safaribooksonline使用 $in 执行正确的 null 匹配(因为您不能将 $eqnull 一起使用)。另外,与 null 比较:

{"something":null}

将匹配“something”字段设置为 null 的文档以及根本没有“something”字段的每个文档。因此,我们必须使用 $exists 确保 key 存在。

关于具有空值的 MongoDb 查询数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15335197/

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