Ste*_*ves 4 c# linq mongodb mongodb-.net-driver
背景:
我需要完成的是,如果记录中的特定数组为null或为空,则删除集合中的所有记录.
据我所知,查找空数组的C#Driver查询是:
IMongoQuery query = Query.Exists("myArray", false);
Run Code Online (Sandbox Code Playgroud)
这对于检测空数组很好,但有时数组不会为null,但不会有任何元素.我需要的更像是:
// Note: second subquery will not work
IMongoQuery query = Query.Or(
Query.Exists("myArray", false),
Query.IsEmpty("myArray", false) // error
);
Run Code Online (Sandbox Code Playgroud)
模型:
我的班级看起来像:
public class MyClass
{
// This property may be null or empty
[BsonElement("myArray")]
public string[] MyArray { get; set; }
[BsonElement("someElement")]
public int SomeElement{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
摘要:
任何有关这方面的帮助将不胜感激!:)
Cra*_*son 13
您正在寻找$ size运算符.
Query.Size("myArray", 0)
如果数组为空,则为true.
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24size
$ exists仅匹配不存在的字段.如果某个字段存在,但它的值为null(BSON为null),则这些字段不与$ exists匹配.http://docs.mongodb.org/manual/reference/operator/query/exists/
但是,在两种情况下,检查字段值是否与空匹配:字段不存在,字段值也为空.http://docs.mongodb.org/manual/faq/developers/#faq-developers-query-for-nulls
所以,在这种情况下.它应该是两个标准的OR条件:1.字段:空2.字段大小= 0;
{"$或":[{"MyArray":{"$ size":0}},{"MyArray":null}]}
归档时间: |
|
查看次数: |
19933 次 |
最近记录: |