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中的“查询”和“命令”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章