c# - 如何查询字段等于空数组?
问题描述
我的集合中有一个数组字段,其值具有属性或空值为“[]”
为了在 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)
PS 我强烈建议使用 C# 数据模型,因为它使一切都更容易使用。
此外,您已经调用了您的字段 ArraryFieldName(请注意r
Array 末尾的额外内容)。如果您没有具有此拼写错误的属性名称的现有数据,您可能需要更正拼写。
推荐阅读
- django-crispy-forms - 脆皮表单 CheckboxSelectMultiple 内联显示
- laravel - 如何使用具有不同用户表的多重身份验证注销 JWT 令牌
- r - ggplot2 - 群体美学没有按预期工作我错过了什么吗?
- php - 从两个不同的网页同时从 php 文件更新 SQL 数据库
- .net - MuleSoft 是否支持 .Net Core 应用程序
- amazon-web-services - 将 Snowflake 账户链接到 AWS 账户 ID
- python - 如何在 Python 中找到列表的最大值?
- python - 如何使用从字符串中抓取的一些运算符
- java - 在 Java 中反转 PriorityQueue 顺序的最快方法
- react-native - 在 react-native 的应用程序中处于睡眠模式或不活动状态后,模态不会打开