MongoDB + C# - driver + query array von Elementen, wobei jedes element des Arrays enthält das sub-Dokument für die Abfrage auf
Ich mit der version 1.5.0.4566 der offizielle MongoDB C# driver. Ich bin mit Mongo version 2.06.
Hier ist, was mein Dokument-Struktur aussieht (entfällt Felder, die nicht notwendig für diese Diskussion):
{ "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")}}
]
}
]
}
Wenn ich wollte die Abfrage der Kinder, die eine StatusId gleich eins ist, und Aktiv ist wahr, dass ich verwenden können, ElemMatch.
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId", 1),Query.EQ("Active",true)));
Was ich nicht bekommen kann, zu arbeiten, wenn ich brauchen, um die SubChild element in meiner Abfrage.
Query.ElemMatch("Children", Query.And(Query.EQ("StatusId",1), Query.EQ("Active",true),Query.LT("SubChild.ExpiresOn",DateTime.UtcNow)));
Die Abfrage nicht alle Werte, die wenn ich versuche Sie zu zählen die SubChild.ExpiresOn Feld in der Abfrage. Ich habe versucht, verschiedene Möglichkeiten, um diese Abfrage, aber immer null Unterlagen, wenn ich den SubChild.ExpiredOn Feld.
Was bin ich?
Dank,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese stattdessen
Sich Fragen, warum diese Abfrage magisch arbeitet? Es ist der Fall (
StatusId
vsStatusID
). JavaScript ist groß-und Kleinschreibung.Könnten Sie beseitigen dieses problem, indem Sie stark typisierte Linq-Abfragen, wie:
Parents
ist eigentlich eine Sammlung und nicht um ein Dokument)