C# MongoDB高级查询

C# MongoDB高级查询,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,假设我有一个集合,它有两个属性:amount和amunreceived,它们是小数 我想写一个查询,返回集合中符合金额大于收到金额条件的项目 目前我有一个javascript函数,如下所示: f = function() { return this.amount > this.amountreceived;} item1 : amount = 50, amountreceived = 0; item2 : amount = 50, amountreceived = 25; 我还有一个集

假设我有一个集合,它有两个属性:amount和amunreceived,它们是小数

我想写一个查询,返回集合中符合金额大于收到金额条件的项目

目前我有一个javascript函数,如下所示:

f = function() { return this.amount > this.amountreceived;}
item1 : amount = 50, amountreceived = 0;
item2 : amount = 50, amountreceived = 25;
我还有一个集合,看起来像这样:

f = function() { return this.amount > this.amountreceived;}
item1 : amount = 50, amountreceived = 0;
item2 : amount = 50, amountreceived = 25;
如果运行
db.MyCollection.find(f)
,则返回的唯一结果是item1


您知道为什么该查询不会同时返回两个结果吗?

您确定这样做正确吗?你有我下面例子的反例吗

这是我的示例测试脚本。(
db.foo
为空)


我假设你在用C#driver?由于BSON没有十进制数据类型,C#驱动程序必须以某种方式表示.NET十进制值。默认表示形式为字符串,这有利于不丢失任何精度,但不利于执行查询


您还可以要求C#驱动程序将.NET十进制值存储为BSON双精度,这会导致精度损失并可能溢出,但对查询很有好处。

有人认为这与驱动程序存储十进制值的方式有关吗?在发送之前,我运行了相同的测试,结果正常。我现在认为这与驱动程序存储十进制数的方式有关。感谢您的响应,我将只存储一个布尔值来指示此逻辑。