MongoDb中的“查询”和“命令”有啥区别

Posted

技术标签:

【中文标题】MongoDb中的“查询”和“命令”有啥区别【英文标题】:What is the difference between "queries" and "commands" in MongoDbMongoDb中的“查询”和“命令”有什么区别 【发布时间】:2016-09-07 22:06:12 【问题描述】:

Hello MongoDB 文档指定有几种方法可以检索地理位置附近的文档:

使用“查询”(例如在查找查询中): https://docs.mongodb.com/v3.0/reference/operator/query-geospatial/

或使用“命令”: https://docs.mongodb.com/manual/reference/command/nav-geospatial/

我不明白命令和操作员/查询之间的区别?这些命令似乎与它们的查询对应物完全相同?

PS:我在我的应用程序中使用 scala reactivemongo 连接器。

【问题讨论】:

【参考方案1】:

我记得是从mongodb definitive guide 2nd edition (mongo 2.6) 读到的,但是这本书只涵盖了 mongo2.6。

    查询命令涵盖了多个任务,例如 CRUD、删除数据库。而database Command涵盖了其他一切,包括管理任务、克隆数据库等。(本书使用的是mongodb v2.6,我相信在mongodbV3.2中queryCommand有更多的功能可以覆盖一些管理任务)

    mongoshell 中的查询返回了一个游标,而数据库命令返回了一个始终具有“ok”状态的文档以及一个或多个信息。


使用数据库命令查询地理位置的示例

db.runCommand( 
       geoNear: <collection> ,
       near:  type: "Point" , coordinates: [ <coordinates> ]  ,
       spherical: true,
       ...
     )

查询命令查询数据库示例

db.places.find(
   
     location:
        $near :
          
            $geometry:  type: "Point",  coordinates: [ -73.9667, 40.78 ] ,
            $minDistance: 1000,
            $maxDistance: 5000
          
       
   
)

【讨论】:

谢谢 vdj4y 所以这只是语法差异?为什么要在 MongoDb 的一组受限查询中使用两种不同的语法?是否存在性能差异?是否只有在集成到查询语言中之前首先作为命令引入的新功能?

以上是关于MongoDb中的“查询”和“命令”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

镜头中的视图和使用有啥区别?

mongodb bsondump 有啥作用

MongoDB和Redis有啥区别? [关闭]

MongoDB:文档、记录和属性之间有啥区别?

JOIN 和 UNION 有啥区别?

JOIN 和 UNION 有啥区别?