文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类似JSON的二进制形式的存储格式,是Binary JSON的简称。
------------------------------------------MongoDB插入文档-------------------------------------
介绍了如何将数据插入到MongoDB的集合中!!!
MongoDB使用了insert()或save()方法向集合中插入文档。
语法:db.COLLECTION_NAME.insert(document)
实例:
以下文档可以存储在MongoDB的test数据库的learn集合中:
以上实例中learn是集合名,如果该集合不在数据库中,MongoDB会自动创建该集合并插入文档。
使用db.learn.find()命令查看已插入的文档:
我们也可以将数据定义为一个变量,如下:
执行插入操作:
插入文档也可以使用db.learn.save(document)命令。如果不指定_id字段save()方法类似于insert()方法。如果指定_id字段,则会更新该_id的数据。
------------------------------------------MongoDB更新文档-------------------------------------
MongoDB使用了update()或save()方法来更新集合中的文档。
update()方法
语法:
参数说明:
- query:update的查询条件,类似于sql update查询内where后面。
- update:update的对象和一些更新的操作符(如:$,$inc...)等,也可以理解为sql update查询内set后面的。
- upset:可选,如果不存在uodate的记录,是否插入objNew,true为插入,默认为false,不插入。
- multi:可选,默认为false,只更新找到的第一条记录,如果为true,就把按天监查出来的福哦天激励全部更新。
- writeConcern:可选,抛出异常的级别。
实例:
先在集合中插入一条如下数据:
使用update()方法来更新title:
以上语句只会修改第一条发现的文档,如果要修改多条相同的文档,则需要设置multi参数为true。
save()方法
语法:save方法是通过传入的文档来替换已有的文档。
参数说明:
- document:文档数据
- writeConcern:可选,抛出异常的级别。
实例:
以下实例中替换了_id为5d54fa454a5e19c982d1ce4a,文档中的likes改为110
替换成功后,通过find()命令来查看替换后的数据:
更多实例:
只更新第一条记录:db.learn.update( { "count" : { $gt : 1 } } , { $set : { "test" : "OK"} } );
全部更新:db.learn.update( { "count" : { $gt : 3 } } , { $set : { "test" : "OK"} },false,true );
只添加第一条:db.learn.update( { "count" : { $gt : 4 } } , { $set : { "test" : "OK"} },true,false );
全部添加进去:db.learn.update( { "count" : { $gt : 5 } } , { $set : { "test" : "OK"} },true,true );
全部更新:db.learn.update( { "count" : { $gt : 15 } } , { $inc : { "test" : 1} },false,true );
只更新第一条记录:db.learn.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
------------------------------------------MongoDB删除文档-------------------------------------
语法:
在执行remove函数之前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
参数说明:
- query:(可选)删除文档的条件。
- justOne:(可选)如果设为true或1,则只删除一个文档,如果不设置该参数,或者用默认值false,则删除所有匹配条件的文档。
实例:
只删除找到的第一条记录,可以设置justOne为1:db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
删除所有的数据:db.col.remove({}) ,相当于SQL中的truncate。
------------------------------------------MongoDB删除文档-------------------------------------
语法:
db.COLLECTION_NAME.find(query,projection)。
db.COLLECTION_NAME.findOne()。//只返回一个文档
db.COLLECTION_NAME.find().pretty()。//以格式化的方式读取数据
参数说明:
- query:可选,使用查询操作符指定查询条件。
- projection:可选,使用投影操作符指定返回的键。省略该参数,查询时返回文档中所有的键值。
实例:
MongoDB与RDBMS Where语句比较:
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {<key>:<value> } | db.col.find({"by":"XXXXX"}).pretty() | where by = 'XXXXX' |
小于 | {<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.COLLECTION_NAME.find({key1:value1, key2:value2}).pretty()
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字$or,语法格式:
AND 和 OR 联合使用
例子:where likes>50 AND (by='hdn' OR title='MongoDB学习')