db.getCollection("c1").find()
db.institution.find()
db.c1.insert([
{name:'z1',age:3},
{name:'z2',age:4},
{name:'z3',age:5}
])
for (var i = 1;i < 10;i++)[
print(i)
]
for (var i = 1;i<=20;i++)[
db.c1.insert([{age:i}])
]
db.c1.find({})
--第三个参数为false 找不到就不管,为true 找不到就插入
db.c1.update({},{$set:{age:10}},false,false) --最后一个参数false 只修改一条数据
db.c1.update({},{$set:{age:10}},false,true)
#D删
语法:db.集合名.remove(条件,是否删除一条)
注意:是否删除一条true 是,false 删除所有
db.c1.remove({},true)
db.c1.remove({},false)
总结:CURD增删改查标识
增 create
db.集合名.insert(json数据)
删 delete
db.集合名.remove(条件,[是否删除一条或多条,true,false])
改 update
db.集合名.update(条件,[是否新增,是否修改])
升级语法 db.集合名.update(条件,[修改器:{键:值}])
查 read
db.集合名.find(条件,[查询的列])
show dbs
use runoob
db.dropDatabase()
db.collection.drop()
use runoob #switched to db runoob
db.createCollection("runoob") # 先创建集合,类似数据库中的表
show tables # show collections 命令会更加准确点
db.runoob.drop() #true
show tables #空
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
#capped 是否创建固定大小的集合 size:整个集合空间大小 6142800 B max:文档最大个数为 10000 个。
db.mycol2.insert({"name" : "菜鸟教程"})
db.mycol2.find()
#MongoDB 中使用 drop() 方法来删除集合。
db.mycol2.drop()
#查找所有集合
show collections
#以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:
db.col.insert({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)
db.col.find()
#MongoDB 使用 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 :可选,抛出异常的级别。
#实例
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() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别。
#实例 这个问题还需要在看看
db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
#MongoDB remove() 函数是用来移除集合中的数据。
db.col.remove({"by":"菜鸟教程"})
db.col.find()
#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
#MongoDB AND 条件
#MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.col.find({key1:value1, key2:value2}).pretty()
#MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
#实例
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
#AND 和 OR 联合使用
#以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
#测试比较运算符
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
})
db.col.find()
db.col.find({likes : {$gt : 100}}) #Select * from col where likes > 100;
db.col.find({likes : {$gte : 100}}) #Select * from col where likes >= 100;
db.col.find({likes : {$lt : 150}}) #Select * from col where likes < 150;
db.col.find({likes : {$lte : 150}}) #Select * from col where likes <= 150;
db.col.find({likes : {$lt :200, $gt : 100}}) #Select * from col where 100<likes < 200;
#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
#title 类型是string的数据
db.col.find({"title":{$type:2}})
#和前者是等价关系
db.col.find({"title":{$type:"string"}})
#MongoDB Limit() 方法 类似sql 分页查询
db.col.find().limit(2);
#单个字段的查询
db.col.find({},{"title":1,_id:0}).limit(2)
#在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
db.col.find({},{"title":1,_id:0}).sort({"like":-1})
#MongoDB 索引
#MongoDB使用 createIndex() 方法来创建索引。
db.col.ensureindex({"like":1})
#MongoDB 聚合
#MongoDB中聚合的方法使用aggregate()。
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])