基本操作命令(From菜鸟教程)
来源:互联网 发布:斗地主残局软件 编辑:程序博客网 时间:2024/05/19 03:20
1、创建数据库 runoob:
use runoob
如果数据库不存在,则创建数据库,否则切换到指定数据库。
2、查看所有数据库,可以使用 show dbs 命令:
> db.runoob.insert({"name":"菜鸟教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
local 0.078GB
runoob 0.078GB
test 0.078GB
>
3、删除数据库
> use runoob
switched to db runoob
> db.dropDatabase()
{ "dropped" : "runoob", "ok" : 1 }
4、插入文档
>db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
查看
> db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
> document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
>
--插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
5、使用 update() 和 save() 方法来更新集合中的文档
update() 方法
db.collection.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 :可选,抛出异常的级别。
--將title的'MongoDB 教程'改為'MongoDB'
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
save() 方法
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
document : 文档数据。
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 );
6、刪除數據
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
<justOne>
)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。
>db.col.remove({'title':'MongoDB 教程'})
WriteResult({ "nRemoved" : 2 }) # 删除了两条数据
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1) # 如果你只想删除第一条找到的记录可以设置 justOne 为 1
>db.col.remove({}) # 如果你想删除所有数据
7、查詢
MongoDB 查询数据的语法格式如下:
>db.COLLECTION_NAME.find()
find() 方法以非结构化的方式来显示所有文档。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
=======指定返回的键,通过find或findOne的第二个参数指定想要的键。=======
> db.visithomepage.find({},{"user_id" : 1,"time" :1})
{ "_id" : ObjectId("4e0713be3ded0ab30ccb4b81"), "user_id" : NumberLong(22715364), "time" : NumberLong(1305108928) }
把不需要看到的,改成0,比如把_id改成0,不让他回复。
> db.visithomepage.find({},{"user_id" : 1,"time" :1,"_id" : 0})
{ "user_id" : NumberLong(23020418), "time" : NumberLong(1305105014) }
=======限制:不可以引用文档中其他键的值。=========
========================================
sort用一个对象作为参数:1代表升序,-1降序。如果指定了多个键,则按照多个键的顺序依次排序。
db.users.find().sort({"username" : 1, "age" : -1})
========================================
与数值元素匹配
db.things.find({ x : { $in: [2, 4, 6]}}); // x in array
db.things.find({ x: { $nin: [2, 4, 6]}}); // x not in array
$all 匹配所有
这个操作符跟SQL语法的in类似,但不同的是, in只需满足( )内的某一个值即可, 而$all必
须满足[ ]内的所有值,例如:
db.users.find({age : {$all : [6, 8]}});
可以查询出 {name: 'David', age: 26, age: [ 6, 8, 9 ] }
但查询不出 {name: 'David', age: 26, age: [ 6, 7, 9 ] }
$exists 判断字段是否存在
查询所有存在age字段的记录
db.users.find({age: {$exists: true}});
查询所有不存在name字段的记录
db.users.find({name: {$exists: false}});
Null 值处理
> db.c2.find({age:null})
$mod 取模运算
查询age取模6等于1的数据
db.c1.find({age: {$mod : [ 6 , 1 ] } })
====================================================
存储过程
关于存储过程你需要知道的第一件事就是它是用 javascript来写的。
MongoDB 存储过程是存储在db.system.js表中的,我们想象一个简单的sql自定义函数如下:
function addNumbers( x , y ) {
return x + y;
}
下面我们将这个sql自定义函数转换为MongoDB 的存储过程:
> db.system.js.save({_id:"addNumbers", value:function(x, y){ return x + y; }});
存储过程可以被查看,修改和删除,所以我们用 find 来查看一下是否这个存储过程已经被创建上了。
> db.system.js.find()
调用一下这个存储过程:
db.eval_r('addNumbers(3, 4.2)');
db.eval_r()是一个比较奇怪的东西,我们可以将存储过程的逻辑直接在里面并同时调用,而无需事先声明存储过程的逻辑。
db.eval_r( function() { return 3+3; } );
====================================================
等于
db.col.find({"by":"菜鸟教程"}).pretty()
where by = '菜鸟教程'
小于
db.col.find({"likes":{$lt:50}}).pretty()
where likes < 50
小于或等于
db.col.find({"likes":{$lte:50}}).pretty()
where likes <= 50
大于
db.col.find({"likes":{$gt:50}}).pretty()
where likes > 50
大于或等于
db.col.find({"likes":{$gte:50}}).pretty()
where likes >= 50
不等于
db.col.find({"likes":{$ne:50}}).pretty()
where likes != 50
大于 小於
db.col.find({"likes":{$gt:50,$lt:100}}).pretty()
where likes > 50
AND
> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
OR
>db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
AND 和 OR 联合使用
>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
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
db.col.find({"title" : {$type : 2}}) --获取 "col" 集合中 title 为 String 的数据
MongoDB Limit() 方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
语法
limit()方法基本语法如下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
8、索引
use runoob
如果数据库不存在,则创建数据库,否则切换到指定数据库。
2、查看所有数据库,可以使用 show dbs 命令:
> db.runoob.insert({"name":"菜鸟教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
local 0.078GB
runoob 0.078GB
test 0.078GB
>
3、删除数据库
> use runoob
switched to db runoob
> db.dropDatabase()
{ "dropped" : "runoob", "ok" : 1 }
4、插入文档
>db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
查看
> db.col.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
> document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
>
--插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
5、使用 update() 和 save() 方法来更新集合中的文档
update() 方法
db.collection.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 :可选,抛出异常的级别。
--將title的'MongoDB 教程'改為'MongoDB'
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
save() 方法
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
document : 文档数据。
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 );
6、刪除數據
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
<justOne>
)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。
>db.col.remove({'title':'MongoDB 教程'})
WriteResult({ "nRemoved" : 2 }) # 删除了两条数据
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1) # 如果你只想删除第一条找到的记录可以设置 justOne 为 1
>db.col.remove({}) # 如果你想删除所有数据
7、查詢
MongoDB 查询数据的语法格式如下:
>db.COLLECTION_NAME.find()
find() 方法以非结构化的方式来显示所有文档。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
=======指定返回的键,通过find或findOne的第二个参数指定想要的键。=======
> db.visithomepage.find({},{"user_id" : 1,"time" :1})
{ "_id" : ObjectId("4e0713be3ded0ab30ccb4b81"), "user_id" : NumberLong(22715364), "time" : NumberLong(1305108928) }
把不需要看到的,改成0,比如把_id改成0,不让他回复。
> db.visithomepage.find({},{"user_id" : 1,"time" :1,"_id" : 0})
{ "user_id" : NumberLong(23020418), "time" : NumberLong(1305105014) }
=======限制:不可以引用文档中其他键的值。=========
========================================
sort用一个对象作为参数:1代表升序,-1降序。如果指定了多个键,则按照多个键的顺序依次排序。
db.users.find().sort({"username" : 1, "age" : -1})
========================================
与数值元素匹配
db.things.find({ x : { $in: [2, 4, 6]}}); // x in array
db.things.find({ x: { $nin: [2, 4, 6]}}); // x not in array
$all 匹配所有
这个操作符跟SQL语法的in类似,但不同的是, in只需满足( )内的某一个值即可, 而$all必
须满足[ ]内的所有值,例如:
db.users.find({age : {$all : [6, 8]}});
可以查询出 {name: 'David', age: 26, age: [ 6, 8, 9 ] }
但查询不出 {name: 'David', age: 26, age: [ 6, 7, 9 ] }
$exists 判断字段是否存在
查询所有存在age字段的记录
db.users.find({age: {$exists: true}});
查询所有不存在name字段的记录
db.users.find({name: {$exists: false}});
Null 值处理
> db.c2.find({age:null})
$mod 取模运算
查询age取模6等于1的数据
db.c1.find({age: {$mod : [ 6 , 1 ] } })
====================================================
存储过程
关于存储过程你需要知道的第一件事就是它是用 javascript来写的。
MongoDB 存储过程是存储在db.system.js表中的,我们想象一个简单的sql自定义函数如下:
function addNumbers( x , y ) {
return x + y;
}
下面我们将这个sql自定义函数转换为MongoDB 的存储过程:
> db.system.js.save({_id:"addNumbers", value:function(x, y){ return x + y; }});
存储过程可以被查看,修改和删除,所以我们用 find 来查看一下是否这个存储过程已经被创建上了。
> db.system.js.find()
调用一下这个存储过程:
db.eval_r('addNumbers(3, 4.2)');
db.eval_r()是一个比较奇怪的东西,我们可以将存储过程的逻辑直接在里面并同时调用,而无需事先声明存储过程的逻辑。
db.eval_r( function() { return 3+3; } );
====================================================
等于
db.col.find({"by":"菜鸟教程"}).pretty()
where by = '菜鸟教程'
小于
db.col.find({"likes":{$lt:50}}).pretty()
where likes < 50
小于或等于
db.col.find({"likes":{$lte:50}}).pretty()
where likes <= 50
大于
db.col.find({"likes":{$gt:50}}).pretty()
where likes > 50
大于或等于
db.col.find({"likes":{$gte:50}}).pretty()
where likes >= 50
不等于
db.col.find({"likes":{$ne:50}}).pretty()
where likes != 50
大于 小於
db.col.find({"likes":{$gt:50,$lt:100}}).pretty()
where likes > 50
AND
> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
OR
>db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
AND 和 OR 联合使用
>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
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
db.col.find({"title" : {$type : 2}}) --获取 "col" 集合中 title 为 String 的数据
MongoDB Limit() 方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
语法
limit()方法基本语法如下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
8、索引
0 0
- 基本操作命令(From菜鸟教程)
- Linux基本命令。。。菜鸟保留
- Linux find命令 | 菜鸟教程
- 菜鸟启航:UILabel基本操作
- 菜鸟启航:UIButton基本操作
- Vi基本命令及操作(简单教程)
- Linux中tar命令操作文件的基本使用教程
- Mysql的基本权限命令操作-菜鸟的进击之路
- Java菜鸟教程 基本数据类型(一)
- Java菜鸟教程 基本数据类型(二)
- ARM9菜鸟教程之vivi命令使用说明
- Maven 菜鸟教程 4 常用dos命令
- Matlab 基本命令、基本操作
- 菜鸟的EL表达式的基本操作
- 菜鸟启航:UITextField基本操作(一)
- 菜鸟启航:UITextField基本操作(二)
- JPA 菜鸟教程 2 单表操作
- MyBatis 菜鸟教程 2 单表操作
- This version of android studio is incompatible with the gradle version used.
- android Error:Error: Expected resource of type string [ResourceType]
- js怎么获取元素的宽高
- Flink流计算与时序数据库Influxdb+grafana
- Linux 定时器的使用
- 基本操作命令(From菜鸟教程)
- 容器
- 文件为图片的格式验证
- android开发之在不加载图片的前提下获得图片的宽高
- reference to 'Size' is ambiguous, candidate found by name lookup is 'Size', 'cv::Size'
- 八皇后问题
- leetcode 412 Fizz Buzz C++
- SQL 笔记
- 关于2的补码(转载)