C# 使用c MongoDB.Driver 2.0.1在数组中创建按位查询
我使用2.0.1版的最新C MongoDB.Driver 我的系列产品如下: 我想创建一个按位比较的查询,如下所示:C# 使用c MongoDB.Driver 2.0.1在数组中创建按位查询,c#,mongodb,C#,Mongodb,我使用2.0.1版的最新C MongoDB.Driver 我的系列产品如下: 我想创建一个按位比较的查询,如下所示: 如何从代码中执行此操作?在您的示例中,只有一个文档符合您的标准。对于该文档,发出一个普通查询{Day:8}要容易得多。换句话说,在一天的所有其他值中,应用Day&8将产生0。如前所述,这里的示例也可以直接查找8的值。但您的基本逻辑问题是$where不能在$elemMatch中使用。相反,您需要JavScript遍历数组ie..some并对每个元素进行比较。但在这种情况下,最好只对
如何从代码中执行此操作?在您的示例中,只有一个文档符合您的标准。对于该文档,发出一个普通查询{Day:8}要容易得多。换句话说,在一天的所有其他值中,应用Day&8将产生0。如前所述,这里的示例也可以直接查找8的值。但您的基本逻辑问题是$where不能在$elemMatch中使用。相反,您需要JavScript遍历数组ie..some并对每个元素进行比较。但在这种情况下,最好只对值8进行直线运算符匹配。可能文档做得不好。在列表中,它有13个元素,1+2+8天与旧驱动程序这是可能的!不是以你编写代码的方式。不能混合运算符。要么全是JavaScript,要么什么都没有。您可以比较其他字段,但整个数组比较需要使用JavaScript。
{
"_id" : "55f7ceb2c01fcb2cd462e7a8",
"Visible" : true,
"Title" : "Product 1",
"Description" : "",
"ShowTimes" : [
{
"Day" : 1,
"From" : 800,
"To" : 1830
},
{
"Day" : 2,
"From" : 800,
"To" : 1830
},
{
"Day" : 4,
"From" : 800,
"To" : 1830
},
{
"Day" : 8,
"From" : 800,
"To" : 2100
},
{
"Day" : 16,
"From" : 800,
"To" : 1830
},
{
"Day" : 32,
"From" : 800,
"To" : 1600
}
],
"Price" : 63.00,
"Discount" : 20,
}
{
"Visible": true,
"ShowTimes": {
"$elemMatch": {
"$where": "this.Day & 8 == 8",
}
}
}