gpt4 book ai didi

MongoDB 指南针 : can't filter a specific ID

转载 作者:行者123 更新时间:2023-12-05 09:31:43 26 4
gpt4 key购买 nike

我有一个像这样的 MongoDB 集合构建:

Screen 1

当我尝试按 ID 过滤时,我得到了不一致的结果。例如,当我尝试通过输入过滤器查询来获取第一个条目时:

{_id:209383449381830657}

我没有找到结果。 enter image description here

但是如果我输入例如第三个,它会正常工作。

{_id:191312485326913536}

enter image description here

我搜索了它是否是由于 int 太大但不是,所有 _id 值都是 Int64 并且它是生成所有条目的相同代码。

我真的不知道为什么会得到这个结果,也不知道为什么要在这里问。

编辑:

  • 所有条目都具有相同的类型。
  • 查询没有设置限制。
  • 如果我输入 {_id:{"$gte":209383449381830657}} 它会找到该条目,但如果我输入 {_id:{"$eq":2093834449381830657 则不会}}

最佳答案

MongoDB Compass 使用 mongo 的 node.js 驱动。

209383449381830657 和 191312485326913536 都超过了 javascript 最大安全整数 (2^53-1)。

Javascript 不会以一致的方式处理大于该值的数字。

请注意,在您的文档中,这些数字被报告为 $numberLong,表明它们没有使用 javascript 的默认 float 字表示。

要一致地查询这些数字,请在查询时使用NumberLong 构造函数,例如

{_id:NumberLong("209383449381830657")}

关于MongoDB 指南针 : can't filter a specific ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68695859/

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