我正在使用官方 MongoDB C# 驱动程序的 1.5.0.4566 版本。我正在使用 Mongo 2.06 版。
这是我的文档结构的样子(省略了本次讨论不需要的字段):
{ "Parents" :
[
{
"CreatedOn": ISODate("2012-07-28T15:30:06.623Z"),
"Title": "Simple Title",
"Children": [
{ "StatusId": 1, "Active" : true, SubChild : { "ExpiresOn": ISODate("2012-07-28T15:30:06.623Z")}},
{ "StatusId": 1, "Active" : true, SubChild : { "ExpiresOn": ISODate("2012-08-28T15:30:06.623Z")}}
]
},
{
"CreatedOn": ISODate("2012-07-28T15:30:06.623Z"),
"Title": "Another Simple Title",
"Children": [
{ "StatusId": 1, "Active" : true, SubChild : { "ExpiresOn": ISODate("2012-07-28T15:30:06.623Z")}},
{ "StatusId": 1, "Active" : true, SubChild : { "ExpiresOn": ISODate("2012-08-28T15:30:06.623Z")}}
]
}
]
}
如果我想查询 StatusId 等于 1 并且 Active 为 true 的孩子,我可以使用 ElemMatch。
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId", 1),Query.EQ("Active",true)));
当我需要在查询中包含 SubChild 元素时,我无法开始工作。
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));
当我尝试在查询中包含 SubChild.ExpiresOn 字段时,查询不返回任何值。我尝试了不同的方法来构建这个查询,但是当我包含 SubChild.ExpiredOn 字段时,总是得到零个文档。
我错过了什么?
谢谢,