1. find简介
db.collection.find([query],[fields])
query:查询文档
fields:指定返回的键
micromsg.user集合
{ "_id" : ObjectId("530c90500fd432925cb60204"), "id" : 100, "nickname" : "路人甲01", "lover" : { "id" : 101, "nickname" : "路人甲02" } } { "_id" : ObjectId("530c90960fd432925cb60205"), "id" : 101, "nickname" : "路人甲02", "lover" : { "id" : 103, "nickname" : "路人甲03" } } { "_id" : ObjectId("530c90970fd432925cb60206"), "id" : 103, "nickname" : "路人甲03", "lover" : { "id" : 100, "nickname" : "路人甲01" } }
find示例
db.user.find({"id": 100}); db.user.find({"lover.id": 100}, {"nickname": 1, "lover": 1}); db.user.find({"lover.id": 100}, {"nickname": 1, "lover.nickname": 1});注:_id这个键总是被返回,即便没有指定,只能显式剔除。
db.user.find({"id": 100}, {"nickname": 1, "_id": 0});限制:查询文档的值必须是常量,不能引用文档中其他键的值。
2. 查询条件
2.1 关系运算符
$lt, $lte, $gt, $gte, $ne分别对应于<, <=, >, >=, <>,可以组合起来查找一个范围。
db.user.find({"id": {"$gt": 100, "$lt": 103}})2.2 $in查询,$nin查询
与SQL中的in类似,用来查询一个键的多个值。
db.user.find({"id": {"$in": [100, 101]}}); db.user.find({"id": {"$nin": [100, 101]}});2.3 逻辑或$or,逻辑非$not
db.user.find({"$or": [{"id": {"$nin": [100, 101]}}, {"lover.id": 101}]}) db.user.find({"id": {"$not": {"$ne": 100}}});3.特定于类型的查询
3.1 null
null不仅仅匹配自身,而且匹配"不存在的"。
db.user.update({"id": 100}, {"$set": {"age": null}}); db.user.update({"id": 101}, {"$set": {"age": 20}}) //包含了age键不存在的文档 db.user.find({"age": null}); //过滤age键不存在的文档 db.user.find({"age": {"$in": [null], "$exists": true}});3.2 正则表达式
匹配字符串,也可以匹配正则表达式
db.user.find({"nickname": /^路人甲/}); db.user.update({"id": 100}, {"$set": {"nickname": /^路人甲3/}}); db.user.find({"nickname": /^路人甲3/});3.3 数组
-- 包含
db.user.update({"id": 100}, {"$set": {"favorite_books": ["西游", "水浒", "三国"]}}); db.user.update({"id": 101}, {"$set": {"favorite_books": ["聊斋", "午夜凶铃", "三国"]}}); db.user.update({"id": 103}, {"$set": {"favorite_books": ["冰与火之歌", "哈利波特"]}}); //包含 db.user.find({"favorite_books": "三国"}); //包含任意一个 db.user.find({"favorite_books": {"$in": ["三国", "水浒"]}});-- 包含多个 $all,与顺序无关
db.user.find({"favorite_books": {"$all": ["三国", "西游"]}});-- 完全匹配:完整的数组精确匹配,元素个数和顺序均一致
//匹配成功 db.user.find({"favorite_books": ["西游", "水浒", "三国"]}); //匹配失败 db.user.find({"favorite_books": ["水浒", "三国"]});-- 精确匹配
db.user.find({"favorite_books.2": "三国"});-- $size
db.user.find({"favorite_books": {"$size": 2}});注:"$size"并不能与其他查询子句组合,比如$gt,但是这种查询可以通过在文档中添加一个"size"键的方式来实现。这样每次添加或者移除元素的时候同步更新"size"键,例如
//添加size键 db.user.update({"id": 100}, {"$set": {"favorite_books_size": 3}}); //更新size键 db.user.update({"id": 100}, {"$push": {"favorite_books": "红楼"}, "$inc": {"favorite_books_size": 1}});-- $slice 返回数组的一个子集合
//1个参数,表示从0开始取n个元素 db.user.find({"id": 100}, {"favorite_books": {"$slice": 2}}); //2个参数,表示从m开始取n个元素 db.user.find({"id": 100}, {"favorite_books": {"$slice": [1, 2]}}); //返回最后一个元素 db.user.find({"id": 100}, {"favorite_books": {"$slice": -1}});注:其它键为默认返回。
相关推荐
MongoDB 是一种流行的 NoSQL 数据库,以文档型数据存储为主,支持丰富的查询表达能力。在本题中,我们将探讨 MongoDB 的查询操作,基于提供的 `user1` 和 `user2` 文档进行练习。 首先,让我们熟悉一下 `db.users....
如果您不习惯MongoDB查询语言,那么Studio3T的SQL查询可能会派上用场。编写SQL选择表达式和SQL联接来查询mongodb,并查看SQL查询如何转换为MQL——这是一个很好的工具。SQL查询语言
MongoDB 查询语法详解 MongoDB 是一个基于NoSQL的数据库,具有高效、灵活、易扩展等特点。在 MongoDB 中,查询语法是非常重要的一部分,本文将对 MongoDB 的查询语法进行详细的介绍。 基本查询语法 在 MongoDB 中...
本文将深入探讨如何验证MongoDB查询性能并进行优化。 首先,我们需要理解MongoDB的查询机制。MongoDB使用查询解释器来解析和执行查询操作。通过`explain()`方法,我们可以获取查询的执行计划,包括扫描的文档数量、...
首先,我们要了解MongoDB查询的基本原理。MongoDB使用查询解释器来解析查询语句,并生成执行计划。执行计划决定了数据如何被检索,包括使用的索引、数据读取顺序等。你可以通过`db.collection.explain()`方法来查看...
一个是用Scala编写的MongoDB查询指定域语言 示例代码: val query = Venue where (_.venuename eqs "Starbucks")query.count()query.countDistinct(_.mayor)query.fetch()query.fetch(n)query.get() // equivalent...
本章主要内容包括理解查询一个电子商务数据模型、MongoDB查询语言的细节、查询选择器及其选项。 MongoDB查询语言不同于传统的SQL,而是采用类JSON的查询语法。书中通过实际的电子商务场景来解释查询操作,如商品、...
使用 Redis 缓存您的 Mongoose MongoDB 查询结果。查询速度提高 300%!mongoose-redis 缓存用于在 Redis 中缓存 Mongoose MongoDB 查询结果的插件。精益数据库查询,速度至少提高 300%!2014 年 5 月 30 日 - 关于此...
本压缩包"一个简单的沙箱来测试和共享MongoDB查询.zip"显然是为了提供一个环境,让用户能够安全地尝试和分享MongoDB查询,而不会影响到生产环境。 在“mongoplayground_dev.zip”中,很可能是包含了一个在线MongoDB...
mongodb查询数据,显示DBCursor.next这种形式,那如何把值带到JSP显示呢? 上传的是一个项目Demo,导入可以直接运行,当然也可以直接查看其中的代码。 项目是使用jquery.ajax显示后台返回的Json串。 若再详细了解...
- 查询构建器:帮助用户构建和执行MongoDB查询语句。 - 监控工具:显示服务器状态,如内存使用、磁盘空间和操作统计等。 在实际工作中,根据需求和环境,开发者和DBA可能会选择其中一个或两者结合来管理MongoDB...
4. 查询执行:在IDEA内直接编写和执行MongoDB查询语句,实时查看结果,支持复杂的聚合框架操作。 5. 脚本执行:支持运行JavaScript脚本,对数据库进行更复杂的操作。 6. 导入导出:可以将数据导入或导出为JSON、CSV...
MongoDB查询语言:分片处理
MongoDB查询语言:备份与恢复
在Thinkphp中使用MongoDB进行多条件查询时,需要对框架提供的驱动进行一定的修改以适应MongoDB的查询方式。 在Thinkphp中实现多条件查询时,可以使用框架提供的查询构建器(Query Builder),但是当涉及到MongoDB的...
本篇资料主要涵盖了MongoDB的基本查询操作,包括查询数据、格式化输出、筛选特定文档以及使用比较运算符进行查询。 首先,MongoDB 中用于查询数据的核心命令是 `find`,正如题目中所提及的,其基本语法格式为 `db....
一、MongoDB查询基础 1. 查询文档:在MongoDB中,查询数据是通过`find()`方法实现的。例如,如果你想从"movies"集合中找到所有的文档,你可以使用以下命令: ```javascript db.movies.find(); ``` 2. 条件查询...
MongoDB查询优化技术研究_葛宇锋.caj
sift.js, 使用mongodb查询筛选数组 使用mongodb查询验证对象的&筛选器数组 扩展文档 checkout http://docs.mongodb.org/manual/reference/operator/query/插件功能:Support
node-monquery, 面向人类的mongodb查询语言 monquerylucene为人类( 还有 ferrets ) 提供了基于字符串的mongodb查询语言。安装$ npm install monquery为什么?更好的搜索/日志过滤的用户体验编写JSON查