我有这样的样品测试集文件:浮点数不匹配的聚集
/* 1 */
{
"_id" : 1.0,
"value" : 10.7
}
/* 2 */
{
"_id" : 2.0,
"value" : 10.8
}
/* 3 */
{
"_id" : 3.0,
"value" : 10.7
}
所以,当我使用$ addFields聚集管道使用查询的文档添加新的“结果”字段:
db.test.aggregate([{$addFields:{result:{ $add : ["$value", .10]}}}]);
它提供了以下结果:
/* 1 */
{
"_id" : 1.0,
"value" : 10.7,
"result" : 10.8
}
/* 2 */
{
"_id" : 2.0,
"value" : 10.8,
"result" : 10.9
}
/* 3 */
{
"_id" : 3.0,
"value" : 10.7,
"result" : 10.8
}
现在我想执行这个新添加的外商投资企业比较ld使用mongo查询:
db.test.aggregate([
{$addFields:{result:{ $add : ["$value", .10]}}},
{ $match : { result : { $eq : 10.8}}}
]);
我看到的是上面的查询是正确的,但不知道为什么它返回没有文件匹配?
我在这里做错了什么吗?
感谢Neil您的回复,但我发布了正确的文档,其中包含测试集合及其mongo查询结果。您的解决方法确实奏效,但特别是在尝试使用不同的十进制数时构造mongo算术表达式并不有用。 –
@SagarRathod是的,它工作。他们是浮点数,这就是你如何处理它们。按照我的例子**完全**。我正在使用您发布的相同数据。 –
@SagarRathod我现在看到你的困惑。你在Robomongo(机器人3T)中运行这个应该已经证明了你如何在你的问题中呈现结果。它的错误,并没有正确显示浮点数。如果使用通用发行版中包含的plain ['mongo'](https://docs.mongodb.com/manual/reference/program/mongo/#bin.mongo)shell运行,则会看到与我一样的输出已发布。尽管如此,更正后的聚合语句即使在Robo 3T中也会选择正确的数据。 –