这是 $mod query 的bug吗?不能使用超过11位的除数?

我采集了一个行政区划的数据,使用如下命令查询省一级的数据
db.collection.find({'_id':{$mod: [10000000000,0]}})
没有任何返回数据
正常需要返回如下数据

{
    "_id" : NumberLong("110000000000"),
    "name" : "北京市"
},

/* 2 */
{
    "_id" : NumberLong("120000000000"),
    "name" : "天津市"
},

/* 3 */
{
    "_id" : NumberLong("130000000000"),
    "name" : "河北省"
},
...

我去掉一个0后能使用10位的除数能返回数据,但不是我的需求。
这是否是$mod的bug?
官方文档中没有相关的说明。
寻求解答

阅读 1.6k
1 个回答

我试验了一下,目前是:

1、mongo shell下,与你描述的情形一样;

2、mongodb driver 2.2.24下,与你描述的情形一样;

 error: null
 result: undefined

3、mongoose driver 4.7.9,

  error : Can't use $mod with ObjectId.

建议访问:https://jira.mongodb.org/secu... ;并提交一个issue跟踪一下。

供参考。

Love MongoDB! Have Fun!

------------------------华丽的分割符--------------------------------

MongoDB中文社区线下活动缤纷,请猛戳下方:

2017华山论剑|MongoDB中文社区

三月份杭州站在即!!! 感兴趣的朋友火速报名!!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进