7

我正在尝试获取具有空字符串字段的文档数量。这个字段,我们称它为“Field_One”,存在于所有文档中(所以,要清楚,我不是试图查找该字段是否存在,我想在字段“Field_One”中查找哪些文档没有任何内容(空字符串) ”。

我尝试使用(使用 C# 驱动程序):

collection.Find(Query.NE("Field_One", BsonNull.Value)).Count()
collection.Find(Query.NE("Field_One", BsonString.Null)).Count()

甚至(有人在某处建议):

collection.Find(Query.GT("Field_One", BsonString.Empty)).Count()

但它不起作用(他们返回所有文件)。

另外,作为一个相关问题:这是获取集合中匹配文档数量的最佳方法吗?据我了解,它实际上不会将数据库中的文档检索到我的程序中,因此计数计算是在 MongoDB 服务器中完成的。

4

3 回答 3

11

BsonNull.Value翻译成 null
BsonString.Empty翻译成 ""
BsonObject.Create("")也翻译成 ""

 collection.Find(Query.NE("Field_One", BsonString.Empty)).Count()

如果该字段实际上填充有“”,则转换为"Field_One": { "$ne": "" }您正在寻找的内容

于 2013-11-22T11:32:40.153 回答
7

为了测试字符串不为空,在 Javascript 中它很简单:

collection.find({Field_One:{ $ne: "" }})

$ne。我无法帮助您将其翻译成 C# 驱动程序语言。

于 2013-11-18T17:19:50.610 回答
0

假设您正在查询一个类的文档,如下所示:

public class MyClass {
        public string Field_One { get; set; }
        //... other attributes, constructors, methods etc...
}

您还可以使用像这样的表达式 lambda 来编写查询,例如:

var res = collection.Find(Query<MyClass>.NE(m => m.Field_One, BsonString.Empty)).Count();
于 2016-06-17T07:20:37.523 回答