mongodb使用查询
概念解析
SQL术语 | mongo术语 | 概念 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表集合 |
row | document | 数据记录行 |
column | field | 数据库字段 |
index | index | 索引 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
数据库连接
运行"use"命令,可以连接到一个指定的数据库。如果没有数据库则创建新的数据库
use logs
switched to db local
删除数据库
use logs
连接数据logs库
db.dropDatabase()
删除数据库
创建集合
db.createCollection(name, options)
注意:在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
删除集合
db.collection.drop()
插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档
db.logs.insert({
title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
db.logs.update(<query>,<update>,{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
例子:
db.logs.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
仅仅修改一条
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
修改多条
删除文档
db.colletion.remove(<query>,<justone>)
例子:
db.logs.remove({title:"MongoDB 教程"}
查询文档
db.collection.find().pretty()
MongoDB and 条件
db.col.find({key1:value1, key2:value2}).pretty()
or条件
db.col.find({$or:{key1:value1},{key2,valuye2}}).pretty()
模糊查询
db.col.find({"content":/测/})
例子:
db.logs.find({"likes":{$gt:0},$or:[{"content":/测/},{title:"MongoDB 教程"}]}).pretty().skip(1).limit(2).sort({"likes":1})
条件操作符
MongoDB中条件操作符有:
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
获取"cols"集合中"likes" 大于100
db.col.find({likes : {$gt : 100}})
获取"col"集合中 "likes" 大于100,小于 200 的数据
db.col.find({likes : {$lt :200, $gt : 100}})
MongoDB Limit与Skip方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
db.col.find().limit(number)
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.col.find().limit(number).skip(number)