MongoDB
>>文档:
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。
文档中的键/值对是有序的。
文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
MongoDB区分类型和大小写。
MongoDB的文档不能有重复的键。
文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
>>集合:
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
比如将不同数据结构的文档插入到集合中:
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}
>>启动mongodb :
sudo service mongod start
>>验证mongodb是否已经成功启动:
cat /var/log/mongodb/mongod.log
或者
ps -aux|grep mongod
>>停止mongodb:
sudo service mongod stop
>>重启mongodb:
sudo service mongod restart
>>开始使用mongodb:
[root@localhost ~]# mongo
> show dbs; ## 查看数据库
> db.version(); ## 查看数据库版本
> db.help();## 常用命令帮助
>>创建数据库
use database_name 如果数据库名不存在,则创建一个数据库,否则返回已经创建好的数据库。数据库创建好后直接转向创建好的数据库。但必须插入文档,数据库才显示出来,空的数据库是不显示出来的。
>>查看当前数据库
db
>>显示数据库列表
show dbs
>>向数据库插入数据
db.items.insert({"name":"helloworld!"})
>>mongodb中默认数据库是test,如果您还没有创建过任何数据库,则集合/文档将存储在test数据库中。
>>删除数据库
db.dropDatabase() 删除当前所选数据库,如果没有选择,则默认删除test数据库
所以删除数据库:先选择数据库,后删除
>use newdb
switched to db newdb
>db.dropDatabase()
>{ "dropped" : "newdb", "ok" : 1 }
>
>>检查创建的集合
show collections
在 MongoDB 中,不需要创建集合。当插入一些文档时,MongoDB 会自动创建集合。
>>db.newcollection.insert({"name" : "yiibaitutorials"})
>>创建集合
db.createCollection(name,options) name:集合名,必须有。 options:可选参数
>>删除集合
db.collection.drop()
删除名称为 mycollection 的集合。
>db.mycollection.drop()
true 删除成功,返回true.删除失败,返回false
==========================================================================
在集合中插入文档
insert()
第一种方式:
db.COLLECTION_NAME.insert(document) 如果集合名没有创建,数据库会自动创建,然后将文档加入集合。
在插入文档时,如果没有指定id参数,mongodb会为此文档分配一个唯一的ObjectId
在单个查询中插入多个文档,可以在insert()命令中传递文档数组。如下所示
> db.mycollection.insert([ {
_id: 101,
title: 'MongoDB Guide',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100 },
{ _id: 102,
title: 'NoSQL Database',
description: "NoSQL database doesn't have tables",
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 210,
comments: [ { user:'user1', message: 'My first comment', dateCreated: new Date(2017,11,10,2,35), like: 0 } ] },
{ _id: 104,
title: 'Python Quick Guide',
description: "Python Quick start ",
by: 'yiibai tutorials', url: 'http://www.yiibai.com',
tags: ['Python', 'database', 'NoSQL'],
likes: 30,
comments: [ { user:'user1', message: 'My first comment', dateCreated: new Date(2018,11,10,2,35), like: 590 } ]
}])
批量插入将返回一个 带有操作状态的BulkWriteResult 对象
文档:文档时一组键值对,MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。
第二种方式:
save()
db.post.save(document) 如果不在文档中指定_id,那么save()方法将与insert()方法一样自动分配ID的值。如果指定_id,则将以save()方法的形式替换包含_id的文档的全部数据。
第三种方式:
db.collection.insertOne() 将单个文档插入到集合中,如果文档没有指定_id字段,MongoDB会自动将_id字段与ObjectId值添加到新文档。
比如:
db.inventory.insertOne( { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } } )
第四种方式:
db.collection.insertMany() 将多个文档插入到集合中 ,如果文档没有指定_id字段,MongoDB会向每个文档添加一个ObjectId值的_id字段。
比如:
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])
执行结果:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("59f96cd9c5a5e6d28faf5730"),
ObjectId("59f96cd9c5a5e6d28faf5731"),
ObjectId("59f96cd9c5a5e6d28faf5732")
]
}