首页 > 解决方案 > 如何查询字段等于空数组?

问题描述

我的集合中有一个数组字段,其值具有属性或空值为“[]”

为了在 mongodb 中获取具有空“[]”值的文档,我使用

db.getCollection('collection').find({"ArrayFieldName":{$eq:[]}})

这给了我预期的结果。但是当我尝试使用 mongodb 驱动程序在 C# 中形成这个查询时,我无法得到预期的结果。

我试过了, filterBuilder.Eq("ArraryFieldName", "[]")而且filterBuilder.Eq("ArraryFieldName", new ArraryClassName(){})

需要 C# 过滤器生成器的帮助来为数组字段指定 $eq:[]。

标签: c#mongodbmongodb-.net-driver

解决方案


一个实例ArraryClassName显然不起作用,因为它不是一个数组实例——它是一个单一的对象。同样"[]"不起作用,因为它是一个string.

您可以检查直接将您的 CLI 查询转换为此过滤器:

Builders<BsonDocument>.Filter.Eq<BsonArray>("ArraryFieldName", new BsonArray())

尽管如果您只是想检查现有数组是否为空,则可以使用此过滤器:

Builders<BsonDocument>.Filter.Size("ArraryFieldName", 0)

PS 我强烈建议使用 C# 数据模型,因为它使一切都更容易使用。

此外,您已经调用了您的字段 ArraryFieldName(请注意rArray 末尾的额外内容)。如果您没有具有此拼写错误的属性名称的现有数据,您可能需要更正拼写。


推荐阅读