gpt4 book ai didi

javascript - MongoDB $cmp(聚合)给出错误结果

转载 作者:行者123 更新时间:2023-11-30 15:09:38 24 4
gpt4 key购买 nike

我在 mongo 中使用 cmp 聚合并使其正常工作,但我认为我遇到的问题是一个错误。当我将 10(或更大)与 8.3 进行比较时,返回 -1。当我比较 9.5 和 8.3 时,返回 1。似乎我将十分位或以上的任何数字与个位的数字进行比较,我得到 -1。如果我将一个与一个进行比较,则效果很好。

下面是比较的部分和结果

 cmpPrice: {
$cmp: ['$amount', '$ticker.price_usd']
},

case "price":
if (doc.cmpPrice == -1 && doc.direction == "above") {
console.log("\t\tConditions Met, Price Above" );
emailUser(doc);
} else if (doc.cmpPrice == 1 && doc.direction == "below") {
console.log("\t\tConditions Met, Price Below");
emailUser(doc);
} else {
console.log("\t\tFailed");
}
break;

结果

       - ID: 59766722b006792254355adb
Amount 10
Ticker Price 7.79818
Conditions( price, above )
CMP( Volume: -1, Market Cap: -1, Price: -1 )
Conditions Met, Price Above
- ID: 597659d5dd06792ea08037e9
Amount 100
Ticker Price 7.79818
Conditions( price, below )
CMP( Volume: -1, Market Cap: -1, Price: -1 )
Failed
- ID: 5976624daccd002bdce2ec6a
Amount 9.5
Ticker Price 7.79818
Conditions( price, above )
CMP( Volume: 1, Market Cap: 1, Price: 1 )
Failed

最佳答案

检查两种类型(AmountTicker Price)是否属于同一类型(数字或字符串)。请记住,$cmp 聚合运算符比较值和类型。如果类型不匹配,the BSON Comparison Order applies.

您的代码的问题很可能是类型不匹配,而 BSON 比较规则发挥了作用。我建议将 Amount 设为一个数字,并将 Ticker Price 转换为一个数字。

关于javascript - MongoDB $cmp(聚合)给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com