如何查询字段等于空数组?
How to query field equals empty array?
我的集合中有一个数组字段,其值具有属性或空值如“[]”
为了获取 mongodb 中具有空“[]”值的文档,我使用
db.getCollection('collection').find({"ArrayFieldName":{$eq:[]}})
这给了我预期的结果。但是当我尝试使用 mongodb 驱动程序在 C# 中形成此查询时,我无法获得预期的结果。
我试过了,
filterBuilder.Eq("ArraryFieldName", "[]")
和 filterBuilder.Eq("ArraryFieldName", new ArraryClassName(){})
需要 C# 过滤器构建器的帮助来为数组字段指定 $eq:[]。
ArraryClassName
的实例显然不起作用,因为它不是数组实例 - 它是单个对象。同样 "[]"
不会工作,因为它是 string
.
您可以检查直接将您的 CLI 查询翻译成此过滤器:
Builders<BsonDocument>.Filter.Eq<BsonArray>("ArraryFieldName", new BsonArray())
尽管如果您只是想检查现有数组是否为空,您可以改用此过滤器:
Builders<BsonDocument>.Filter.Size("ArraryFieldName", 0)
P.S。我强烈建议使用 C# 数据模型,因为它使一切都更容易处理。
此外,您已将字段命名为 ArraryFieldName(请注意数组末尾的额外 r
)。如果您没有包含此拼写错误 属性 名称的现有数据,您可能需要更正拼写。
我的集合中有一个数组字段,其值具有属性或空值如“[]”
为了获取 mongodb 中具有空“[]”值的文档,我使用
db.getCollection('collection').find({"ArrayFieldName":{$eq:[]}})
这给了我预期的结果。但是当我尝试使用 mongodb 驱动程序在 C# 中形成此查询时,我无法获得预期的结果。
我试过了,
filterBuilder.Eq("ArraryFieldName", "[]")
和 filterBuilder.Eq("ArraryFieldName", new ArraryClassName(){})
需要 C# 过滤器构建器的帮助来为数组字段指定 $eq:[]。
ArraryClassName
的实例显然不起作用,因为它不是数组实例 - 它是单个对象。同样 "[]"
不会工作,因为它是 string
.
您可以检查直接将您的 CLI 查询翻译成此过滤器:
Builders<BsonDocument>.Filter.Eq<BsonArray>("ArraryFieldName", new BsonArray())
尽管如果您只是想检查现有数组是否为空,您可以改用此过滤器:
Builders<BsonDocument>.Filter.Size("ArraryFieldName", 0)
P.S。我强烈建议使用 C# 数据模型,因为它使一切都更容易处理。
此外,您已将字段命名为 ArraryFieldName(请注意数组末尾的额外 r
)。如果您没有包含此拼写错误 属性 名称的现有数据,您可能需要更正拼写。