我有這樣的樣品測試集文件:浮點數不匹配的聚集
/* 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中也會選擇正確的數據。 –