mongodb 查询操作

mongodb 查询操作

1. 简单查询

使用如下命令,进行查询。

db.col.find({})
# 根据名称查询
db.col.find({name : "test"})

# 根据id查询
db.col.find({_id : ObjectId("5e6b3e6ba5677ada17d918b6")})

# 根据日期进行查询
db.col.find({startDate: ISODate("2019-07-15T08:03:24.000Z")})

# 上述查询中的find可以替换为finOne, 只查询符合条件的第一条数据
# mongodb默认会返回所有的key value类型,如果只是想要某个字段,则使用下面的命令
# 前面的含义为查询条件,后面为显示的字段,只显示name,_id 是默认的,可以使用_id : 0,取消显示
db.col.find({name : "test"}, {name : 1})

# 两个大括号,前面为限制条件,后面为要显示的字段
db.col.find({}, {name : 1})

2. 组合条件查询

# 根据多种属性进行查询,中间是and关系
db.col.find({name:"test", age : 18})

# 多种条件查询,为or关系
db.col.find( {$or: [{age : 18}, {name : "test"}]})

# 模糊查询,相当于mysql中的like,使用// 即可
db.col.find({name : /test/})

#基本的比较操作符 $lt:<   $lte:<=  $gt:>  $gte:>=  $ne:!=
# 根据范围内查询,如年龄大于18岁的
db.col.find({age:{$gt:18}})

# 年龄在18--25之间的 
db.col.find({age:{$gt : 18, $lt: 25}})

# 查询年龄为18或者19,或者20岁的,可以使用$or操作,也可以使用$in操作符
# $nin 表示不在该集合里面
db.col.find({age : {$nin: [18,19,20]}})

3. list内查询

# list里面也是key:value的结构
# document里面包含list,根据list的元素查询,
db.col.find({tags:{$elemMatch:{name : "test"}}})
# 或者使用如下语句
db.col.find({"tags.name" : "test"})  

# list里面不是key:value结构,你自己定义的不是key:value结构
db.col.find({tags : {$in :["ABC"]}})

4. 对空值的查询

# mongodb中对null值的查询,或者是不存在的值,
# 下面的命令表示document中没有age这个字段
db.col.find({age: null})
# 或者使用如下命令
db.col.find({age: {$exists : true}})

# 如果是有值,要看具体的类型,如果是类型的空的list话,使用如下命令
db.col.find({tags: [] })
# 如果类型不是list,使用""代替
db.col.find({tags: ""})

5. limit 和skip方法

# limit方法,限制要查找的条数
db.col.find({age : 18)}).limit(2)

# skip方法,跳过要查询的条数,跳过符合条件的前两条
db.col.find({age : 18)}).skip(2)

# 组合使用
db.col.find({age : 18)}).limit(2).skip(2)

6. 排序

# 根据年龄排序,升序
db.col.find({age : 18}).sort({age: 1})

# 根据年龄排序,降序
db.col.find({age : 18}).sort({age: -1})

7. 删除、更新操作

# 删除特定条件的document
db.col.remove({age : 18)})
# 删除所有的document
db.col.remove({})

# 文档更新操作 第一个{}为限定条件,即查询条件,{multi:true}表示更新所有满足条件的,否则只更新一条
db.col.update({name:"test"},{$set:{age : 18}},{multi:true})
db.col.update({name:"test"},{$set:{age : 18}} false, true)
# 删除文档中的某一个字段
db.col.update({name : "test"},{$unset:{'age':''}},false, true)

# 文档中添加某个字段
db.col.update({name : "test"},{$set:{'age':''}},false, true)

你可能感兴趣的:(编程问题)