【发布时间】:2015-07-09 15:11:12
【问题描述】:
我有这样的文档结构:
{
"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
}
]
}
我需要选择参数集合中的任何参数应用于下一个条件的所有对象:
Expression<Func<SuperObject, bool>> newPred = x => x.Parameters.Any(
p => p.Key == id
&& p.Value >= min
&& p.Value <= max
)
我尝试过这样做:
db.SuperObjects.find({
Parameters: {
$elemMatch: {
Key: 104,
$and: [
{Value: { $gte: 8 }},
{Value: { $lte: 10 }}
]
}
}
})
它在 mongodb 中工作。但是如何用c#编写这样的代码呢?
我试过了
filter = filter & builder.ElemMatch("Parameters", builder.Eq("Key", id) & builder.Gte("Value", min) & builder.Lte("Value", max));
它抛出无效的转换异常,因为试图将参数对象转换为我的 SuperObject...
【问题讨论】:
标签: c# mongodb mongodb-query bson