ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MongoDB从入门到实战(五):MongoDB 查询find

2021-04-12 10:30:32  阅读:126  来源: 互联网

标签:username 入门 MongoDB db find user hobby id


db.collection.find()

查找所有文档

// 查找所有文档,相当于 select * from user
> db.user.find()
// pretty() : 用于美化返回值,每个key:value 各占一行
> db.user.find().pretty()
{
	"_id" : 1,
	"username" : "a"
}

// find 肯定也支持带条件的查询, 相当于select * from user where username = 'a'
> db.user.find({"username": "a"})
{ "_id" : 2, "username" : "a" }

// 查询指定字段,1:代表要查询的字段,0:代表不要查询的字段
// select username from user where username = 'a'
> db.user.find({"username": "a"}, {"_id": 0, "username": 1})
{ "username" : "a" }
{ "username" : "a" }

db.collection.findOne()

查询满足条件的第一条记录。

// select * from user limit 1
> db.user.findOne()
{ "_id" : 1, "username" : "a" }


> db.user.find()
{ "_id" : 1, "username" : "a" }
{ "_id" : 2, "username" : "a" }
// 返回满足条件的第一条
> db.user.findOne({"username": "a"})
{ "_id" : 1, "username" : "a" }

$lt 小于 $gt 大于

// select * from user where _id < 2
> db.user.find({"_id": {"$lt": 2}})
{ "_id" : 1, "username" : "a" }

// select * from user where _id > 1
> db.user.find({"_id": {"$gt": 1}})
{ "_id" : 2, "username" : "a" }

// 同一个字段多个条件
// select * from user where _id > 1 and _id < 3
> db.user.find({"_id": {"$gt": 1, "$lt": 3}})
{ "_id" : 2, "username" : "a" }

$in

// select * from user where _id in (1, 2)
> db.user.find({"_id": {"$in": [1, 2]}})
{ "_id" : 1, "username" : "a" }
{ "_id" : 2, "username" : "a" }

正则表达式和数组

> db.user.remove({})
> db.user.insertMany([{ "_id" : 1, "username" : "xiaohong" },{ "_id" : 2, "username" : "xiaoming" }, { "_id" : 3, "username" : "mingMING" }])
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] }

// /^/表示以什么开头,即右模糊,相当于 select * from user where username like 'xiao%'
> db.user.find({"username": /^xiao/})
{ "_id" : 1, "username" : "xiaohong" }
{ "_id" : 2, "username" : "xiaoming" }

// /$/表示以什么结束,即左模糊,相当于 select * from user where username like '%ming'
> db.user.find({"username": /ming$/})
{ "_id" : 2, "username" : "xiaoming" }

// i : 表示忽略大小写
> db.user.find({"username": /ming$/i})
{ "_id" : 2, "username" : "xiaoming" }
{ "_id" : 3, "username" : "mingMING" }

// 左右模糊,select * from user where username like '%mi%'
> db.user.find({"username": /mi/})
{ "_id" : 2, "username" : "xiaoming" }
{ "_id" : 3, "username" : "mingMING" }


// 正则表达式用于数组
> db.user.find()
{ "_id" : 1, "username" : "xiaohong", "hobby" : [ "dog" ] }
{ "_id" : 2, "username" : "xiaoming", "hobby" : [ "money", "xiaojiejie" ] }
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }

> db.user.find({"hobby": /xiaojiejie/})
{ "_id" : 2, "username" : "xiaoming", "hobby" : [ "money", "xiaojiejie" ] }
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }


// 正则表达式中包含变量需要使用eval()函数
> var ele = "xiaojiejie"
> db.user.find({"hobby": eval("/" + ele + "/")})
{ "_id" : 2, "username" : "xiaoming", "hobby" : [ "money", "xiaojiejie" ] }
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }
// 条件字段如果是数组,条件值为一个元素表示是否包含,包含该元素就查询出来
> db.user.find({"hobby": "xiaojiejie"})
{ "_id" : 2, "username" : "xiaoming", "hobby" : [ "money", "xiaojiejie" ] }
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }

// 条件字段如果是数组,条件值为一个数组,此时表示的是精确匹配,不是包含关系
> db.user.find({"hobby": ["xiaojiejie"]})
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }

// 数组中同时包含多个元素需要使用修饰符 $all
> db.user.find({"hobby": {"$all": ["xiaojiejie", "money"]}})
{ "_id" : 2, "username" : "xiaoming", "hobby" : [ "money", "xiaojiejie" ] }

// 使用下标作为数组条件,表示第i个元素的值是指定值的文档
> db.user.find({"hobby.0": "xiaojiejie"})
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }

// 根据数组元素个数作为查询条件
> db.user.find({"hobby": {"$size": 1}})
{ "_id" : 1, "username" : "xiaohong", "hobby" : [ "dog" ] }
{ "_id" : 3, "username" : "mingMING", "hobby" : [ "xiaojiejie" ] }

$and

$or

$and 和 $or

标签:username,入门,MongoDB,db,find,user,hobby,id
来源: https://blog.csdn.net/vbirdbest/article/details/115612132

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有