i have such document structure:
{ "name" : "hello world", "parameters" : [ { "key" : 104, "value" : 8 }, { "key" : 112, "value" : 20 }, { "key" : 176, "value" : 2 }, { "key" : 179, "value" : 1 }, { "key" : 180, "value" : 3 }, { "key" : 177, "value" : 1 }, { "key" : 302, "value" : 1 }, { "key" : 303, "value" : 0 }, { "key" : 178, "value" : 3 }, { "key" : 181, "value" : 2015 } ] } i need select objects parameter parameters collections aplliyed next conditions:
expression<func<superobject, bool>> newpred = x => x.parameters.any( p => p.key == id && p.value >= min && p.value <= max ) i tried that:
db.superobjects.find({ parameters: { $elemmatch: { key: 104, $and: [ {value: { $gte: 8 }}, {value: { $lte: 10 }} ] } } }) and works in mongodb. how write such code in c#?
i tried
filter = filter & builder.elemmatch("parameters", builder.eq("key", id) & builder.gte("value", min) & builder.lte("value", max)); it throws invalid cast exceptions because tried cast parameters object superobject...
as far can see, query not parameters satisfies condition whole document itself. intended? select set of subdocument must use group.
having said that, can create filter based on mongo query directly
bsondocument filter = mongodb.bson.serialization.bsonserializer.deserialize<bsondocument>("{ parameters: { $elemmatch: { key: 104, $and: [{value: { $gte: 8 }}, {value: { $lte: 10 }}] } } })")
Comments
Post a Comment