MongoDB中query当key时的错误

博主在使用MongoDB数据库时遇到将'query'作为记录条件时无法正常查询的问题,尤其是使用in逻辑查找时,query作为key的文档无法被找到。此情况可能涉及数据库版本或查询语法的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最近在操作MongoDB时,遇到一个比较坑爹的问题,就是将“query”当做一条的记录,它在一些条件下就“失效”。

    我使用的MongoDB数据库版本是1.8.3。MongoDB shell version: 2.0.3

    具体数据:

{ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }
{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }
{ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }

 

     在正常的key value查找时没有任何问题:

PRIMARY> db.testin.find({query: 1})
{ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }
PRIMARY> db.testin.find({q: 1})
{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }
PRIMARY> db.testin.find({quer1: 1})

  

     用or逻辑查找也没有问题:

PRIMARY> db.testin.find({$or:[{query: 1}]})
{ "_id" : ObjectId("4fe955021219143f31b9d2b9"), "query" : 1, "test" : [ 1, 2, 3 ] }
PRIMARY> db.testin.find({$or:[{q: 1}]})
{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }
PRIMARY> db.testin.find({$or:[{query1: 1}]})
{ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }

 

     但用in逻辑查找时,就出现query作为key的文档找不到,具体如下:

PRIMARY> db.testin.find({query: {$in: [1]}})
PRIMARY> db.testin.find({query1: {$in: [1]}})
{ "_id" : ObjectId("4fe955b11219143f31b9d2bb"), "query1" : 1, "r" : 2 }
PRIMARY> db.testin.find({q: {$in: [1]}})
{ "_id" : ObjectId("4fe9557b1219143f31b9d2ba"), "q" : 1, "r" : 2 }

     

     个人感觉这应该算是个bug,造成的具体原因还在寻找过程中,今天先把这个问题抛出来,有过这方面经验的大牛,希望能指教一下。谢谢

转载于:https://www.cnblogs.com/lengyuhong/archive/2012/06/28/2563657.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值