MongoDB常用命令

title: MongoDB常用命令
tags:

mongodb

note

笔记
categories: 学习笔记
description: >-
最近新的项目中使用了MongoDB,所以也就花了点时间学习了一下。这篇文章给自己的学习做一个总结,打算日后把这篇文章当做API来使用,也分享给一些准备学习的小伙伴,希望能帮到你们。
date: 2018-04-25 20:49:12
---

MongoDB常用命令

  最近新的项目中使用了MongoDB,所以也就花了点时间学习了一下。这篇文章给自己的学习做一个总结,顺便日后把这篇文章当做API来使用,也分享给一些准备学习的小伙伴,希望能帮到你们。

基础知识

mongo使用的默认数据库名是test。 如果没有创建任何数据库,那么集合及操作的数据将被保存在test数据库。

mongo中数据全部使用类json的文档格式表示,mongo中称为“bson”,下文中我会用“document”进行代替。

mongo与mysql的数据集合对应关系:

db=database,数据库没什么好说的。

table=collection,在mongo中,集合有点类似于表的概念。

mongo中字段还是有比较大的区别的,mongo的字段不是根据collection的设定而决定的,是根据数据决定。比如,有如下两条数据在同一collection中:

{"_id":1,"name":"Bob","age":18} {"_id":2,"city":"北京"} 你在可视化工具中看到的字段可能是_id、name、age、city,只不过第一条数据city为空,第二条数据name与age为空;然而情况却并不是这样的,要讲两条数据分开理解,它们只是单纯的归属于同一个聚合下而已,通过collection.find("_id":1)获取回的数据,不会包含name与age,有点类似于二维数组,每一维的数组(数据)都是各自独立的。

数据库集合操作

use DATABASE_NAME
例:use mydb
将会跳转到名为mydb的数据库,如果该数据库不存在,则创建该数据库。

db
查看当前选择的数据库

show dbs
查看数据库列表

db.dropDatabase()
删除当前数据库

db.collections.drop()
删除当前集合

新增(Create)

insert
db.COLLECTION_NAME.insert(document)
若不指定_id则会自动生成一个随机唯一的id,插入多条记录可以使用
db.COLLECTION_NAME.insert([doucument,document])
例:

db.col.insert({ title: 'MongoDB',by: 'bfsan',tags:['mongodb', 'database', 'NoSQL'],likes: 100 })

此外还有inserOne()和inserMany(),使用这两个方法可以返回插入文档的id值,用法与insert一致。

更新(Update)

update

db.collection.update( <query>, <update>, { upsert: <boolean>,//true则对于不存在对应情况的记录会新增,存在则会修改 multi: <boolean>,//true则会修改多条记录 writeConcern: <document>//(可选)写安全,用的不多,详细内容请再查询 })

例:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );//对count>15的所有记录,count=count+1 db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );//对查询是否存在count>4的记录,存在则为查到的第一条记录(增加/修改)test5=OK,不存在则增加一条test5=OK的记录

save

db.collection.save( <document>, {writeConcern: <document>} )

save方法通过传入文档来替换已有文档,如不指定id则为新增,自动分配id,如果指定_id,替换包含_id的记录的全部数据。

删除(Delete)

delete

db.collection.remove( <query>,//当条件为空时,则清空该collection { justOne: <boolean>, //true或1,则只删除第一个文档 writeConcern: <document> }) 查询(Retrieve)

find

db.collection.find(<query>, <projection>)//query条件,省略则查询所有;projection投影出指定的列,省略则显示所有列 查询条件 功能 语法
等于   {key:value}  
小于   {key:{$lt:value}}  
小于或等于   {key:{$lte:value}}  
大于   {key:{$gt:value}}  
大于或等于   {key:{$gte:value}}  
不等于   {key:{$ne:value}}  
and   {key1:value1, key2:value2}  
or   {$or:[{key1: value1},{key2:value2}]}  
not   {key:{$not:value}}  
in   {key:{$in:array}}  
not in   {key:{$nin:array}}  
all   {key:{$all:array}}  
是否存在   {key:{$exists:true/false}}  
匹配某种数据类型的记录   {key:{$type:type}}  
结果处理 .pretty() //格式化结果显示,使结果格式自动缩进符合规范。 .limit(n) //显示前n条记录 .skip(n) //跳过前n条记录 .sort({key:1/-1}) //排序,1升序,-1降序

注:当查询时同时使用sort,skip,limit,无论调用先后,执行顺序总是sort-skip-limit。

连接查询

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsspsf.html