zoukankan      html  css  js  c++  java
  • MongoDB中query当key时的错误

        最近在操作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,造成的具体原因还在寻找过程中,今天先把这个问题抛出来,有过这方面经验的大牛,希望能指教一下。谢谢

  • 相关阅读:
    一起来学SpringBoot(十七)优雅的参数校验
    使用JDBC创建出版社和书籍管理系统
    springMvc(初识+操作步骤)
    模拟Java-Sping,实现其IOC和AOP核心
    python多个装饰器的执行顺序
    JAVA——不简单的fianl关键字
    Java HTTP 组件库选型看这篇就够了
    这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!
    13数据结构与算法分析之---链式栈
    12数据结构与算法分析之---顺序栈
  • 原文地址:https://www.cnblogs.com/lengyuhong/p/2563657.html
Copyright © 2011-2022 走看看