Hier ist, wie wenn man die genaue Abfrage erhalten mag:
// create the $elemMatch with Type and Value
// as we're just trying to make an expression here,
// we'll use $elemMatch as the property name
var qType1 = Query.EQ("$elemMatch",
BsonValue.Create(Query.And(Query.EQ("Type", 1),
Query.EQ("Value", "a"))));
// again
var qType2 = Query.EQ("$elemMatch",
BsonValue.Create(Query.And(Query.EQ("Type", 2),
Query.EQ("Value", "b"))));
// then, put it all together, with $all connection the two queries
// for the Properties field
var query = Query.All("Properties",
new List<BsonValue> {
BsonValue.Create(qType1),
BsonValue.Create(qType2)
});
Der hinterhältige Teil ist, dass viele der Parameter zu den verschiedenen Query
erfüllt Hods erwartet BsonValue
s anstatt Abfragen, Sie so etwas wie, indem Sie eine BsonValue
Instanz von einer Query
Instanz erstellen:
// very cool/handy that this works
var bv = BsonValue.Create(Query.EQ("Type", 1));
Die eigentliche Abfrage entspricht Ihre ursprüngliche Anfrage gesendet genau:
query = {
"Properties": {
"$all": [
{ "$elemMatch": { "Type": 1, "Value": "a" }},
{ "$elemMatch": { "Type": 2, "Value": "b" }}
]
}
}
(I‘ d nie gesehen, dass Stil von $all
Verwendung entweder, aber anscheinend klingt es wie it's just not documented noch.)
Die Abfrage mit $ und ist nicht 100% gleichwertig zu den ursprünglichen. Bitte beachten Sie den Link am Ende meiner Frage für Details. Wie auch immer, danke für deine Antwort. – Kamarey