博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb基本操作
阅读量:6800 次
发布时间:2019-06-26

本文共 11490 字,大约阅读时间需要 38 分钟。

数据库操作

  • 创建数据库
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
show dbs 显示所有数据库db 显示当前数据库use test 连接到指定数据库

 

刚刚创建后显示不出来, 要想显示,需要插入数据才可以
  • 删除数据库
db.dropDatabase()

删除当前数据库

 
  • 删除集合
db.collection.drop()

 

文档操作

 

  • 插入文档
所有存储在集合中的数据都是BSON格式, 类json的二进制Binary JSON
db.COLLECTION_NAME.insert(document)
集合名不存在则自动创建
实例 1
>db.col.insert({title: 'MongoDB 教程',     description: 'MongoDB 是一个 Nosql 数据库',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 100})

 

实例2
将数据定义为变量, 然后插入变量
> document=({title: 'MongoDB 教程',     description: 'MongoDB 是一个 Nosql 数据库',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 100});
.db.col.insert(document)

 

 
 
插入文档也可使用dbcol.save(document)
       指定_id则会更新
  • 查看文档

  1. db.col.find()db.col.find().pretty()        #格式化数据

     

  • 更新文档
mongoDB使用update() 和save() 来更新集合中的文档
update()    更新已经存在的文档
db.collection.update(   
,
, { upsert:
, multi:
, writeConcern:
})

 

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

 

实例
>db.col.insert({    title: 'MongoDB 教程',     description: 'MongoDB 是一个 Nosql 数据库',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 100})
db.col.update({
'title':'MongoDB 教程'},{$set:{
'title':'MongoDB'}})
db.col.find().pretty()

 

 
 如果要修改多挑文档, 设置multi参数为true
 
db.col.update({
'title':'MongoDB 教程'},{$set:{
'title':'MongoDB'}},{multi:true})

 

save()
通过传入的文档来替换已有的文档
 
db.collection.save(   
, --文档数据 { writeConcern:
--可选, 抛出异常的级别 })

 

实例: 

以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

>db.col.save({    "_id" : ObjectId("56064f89ade2f21f36b03136"),    "title" : "MongoDB",    "description" : "MongoDB 是一个 Nosql 数据库",    "by" : "Runoob",    "url" : "http://www.runoob.com",    "tags" : [            "mongodb",            "NoSQL"    ],    "likes" : 110})

 

 

更多实例

只更新第一条记录:db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );全部更新:db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );只添加第一条:db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );全部添加加进去:db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );全部更新:db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );只更新第一条记录:db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

 

  • 删除文档

remove()
使用删除前, 先find()来判断条件是否正确
 
db.collection.remove(   
, --删除的条件 { justOne:
, --justOne, true为删除一个 writeConcern:
--抛出异常的级别, 可选 })

 

删除
>db.col.remove({
'title':'MongoDB 教程'})WriteResult({ "nRemoved" : 2 }) # 删除了两条数据>db.col.find()
 

如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

>db.col.remove({})>db.col.find()

 

 文档查询

 
  • 文档查询操作
 
  1. >db.COLLECTION_NAME.find()

     

使用易读的方式来读取数据, 可以使用pretty()
>db.col.find().pretty()
MongoDB 与 RDBMS Where 语句比较

如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

操作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
 
 

AND   可以传入多个键(key) 每个key用逗号隔开

>db.col.find({key1:value1, key2:value2}).pretty()

实例, 相当于where中的and

db.col.find({
"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()

 

$or   相当于where中的or

>db.col.find(   {      $or: [         {key1: value1}, {key2:value2}      ]   }).pretty() 实例>db.col.find({$or:[{
"by":"菜鸟教程"},{
"title": "MongoDB 教程"}]}).pretty()

 

 
 

and和or的联合使用

         
where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
 
  
>db.col.find({
"likes": {$gt:50}, $or: [{
"by": "菜鸟教程"},{
"title": "MongoDB 教程"}]}).pretty(){ "_id" : ObjectId("56063f17ade2f21f36b03133"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100}

条件操作符

 条件操作符

(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(<= ) 小于等于 - $lte

 

我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。

为了方便测试,我们可以先使用以下命令清空集合 "col" 的数据:

db.col.remove({})

 

插入以下数据

>db.col.insert({    title: 'PHP 教程',     description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['php'],    likes: 200})

 

>db.col.insert({title: 'Java 教程',     description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['java'],    likes: 150})

 

>db.col.insert({title: 'MongoDB 教程',     description: 'MongoDB 是一个 Nosql 数据库',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['mongodb'],    likes: 100})

 

使用find()命令查看数据:

> db.col.find(){ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

MongoDB (>) 大于操作符 - $gt

如果你想获取 "col" 集合中 "likes" 大于 100 的数据,你可以使用以下命令:

db.col.find({
"likes" : {$gt : 100}})

类似于SQL语句:

Select * from col where likes > 100;

输出结果:

> db.col.find({
"likes" : {$gt : 100}}){ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }>

MongoDB(>=)大于等于操作符 - $gte

如果你想获取"col"集合中 "likes" 大于等于 100 的数据,你可以使用以下命令:

db.col.find({likes : {$gte : 100}})

类似于SQL语句:

Select * from col where likes >=100;

输出结果:

 

> db.col.find({likes : {$gte : 100}}){ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }>

MongoDB (<) 小于操作符 - $lt

如果你想获取"col"集合中 "likes" 小于 150 的数据,你可以使用以下命令:

db.col.find({likes : {$lt : 150}})

类似于SQL语句:

Select * from col where likes < 150;

输出结果:

> db.col.find({likes : {$lt : 150}}){ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

MongoDB (<=) 小于操作符 - $lte

如果你想获取"col"集合中 "likes" 小于等于 150 的数据,你可以使用以下命令:

db.col.find({likes : {$lte : 150}})

类似于SQL语句:

Select * from col where likes <= 150;

输出结果:

> db.col.find({likes : {$lte : 150}}){ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

 

  • MongoDB 使用 (<) 和 (>) 查询 - $lt 和 $gt

如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:

db.col.find({likes : {$lt :200, $gt : 100}})

类似于SQL语句:

Select * from col where likes>100 AND  likes<200;

输出结果:

> db.col.find({likes : {$lt :200, $gt : 100}}){ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }

 

$Type操作符

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

MongoDB 中可以使用的类型如下表所示:

类型 数字 备注
Double 1  
String 2  
Object 3  
Array 4  
Binary data 5  
Undefined 6 已废弃。
Object id 7  
Boolean 8  
Date 9  
Null 10  
Regular Expression 11  
JavaScript 13  
Symbol 14  
JavaScript (with scope) 15  
32-bit integer 16  
Timestamp 17  
64-bit integer 18  
Min key 255 Query with -1.
Max key 127  

我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。

简单的集合"col":

>db.col.insert({    title: 'PHP 教程',     description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['php'],    likes: 200})
>db.col.insert({title: 'Java 教程',     description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['java'],    likes: 150})
>db.col.insert({title: 'MongoDB 教程',     description: 'MongoDB 是一个 Nosql 数据库',    by: '菜鸟教程',    url: 'http://www.runoob.com',    tags: ['mongodb'],    likes: 100})

 

使用find()命令查看数据:

> db.col.find(){ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }

 

MongoDB 操作符 - $type 实例

如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({
"title" : {$type : 2}})

输出结果为:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
来源: 
 
 
 
来源: 
 

 mongodb系列开始写在wiz中了, 后来直接拷贝的, 格式挺乱

转载地址:http://fvuwl.baihongyu.com/

你可能感兴趣的文章
MVC数据库数据分页显示
查看>>
CreatarGlobe实现多机立体显示方案(初稿)
查看>>
JAVA设计模式初探之桥接模式
查看>>
拉链表-增量更新方法一
查看>>
有什么样的博客手机客户端
查看>>
听10秒就会喜欢上的歌曲
查看>>
去掉发送到里的选项
查看>>
windows server 2008修改远程桌面连接数
查看>>
初探Object Pascal的类(二)
查看>>
成功站长应具备的良好心态
查看>>
mke2fs 制作ext2文件系统image
查看>>
模式识别之线条矩形识别---长方形画布或纸张并提取图像内容
查看>>
面试经典(1)---翻转字的顺序在一个句子
查看>>
Linux socat命令
查看>>
objective-c 中数据类型之中的一个 几何数据类型(CGPoint,CGSize,CGRect)
查看>>
[Dubbo实战]dubbo + zookeeper + spring 实战 (转)
查看>>
mysql学习笔记(二)
查看>>
Minor【 PHP框架】1.简介
查看>>
面试1
查看>>
【Java基础】4、java中的内部类
查看>>