MongoDB基本用法

0.背景

1.MongoDB是一种NoSql数据库,不支持sql语言,没有表结构,放弃了对事物的支持,不能进行多表查询。性能更好。

MongoDB的特点:

2.无数据结构的限制 
1.无表结构的概念,每条结构可以有完全不同的结构 
2.业务开发快捷方便

3.完全的索引支持: 
1.Redis的key-value 
2.hbase的单索引,二级索引需自己实现

1.基本操作:

sudo service mongodb start

停止MongoDB

sudo service mongodb stop

重启 MongoDB

sudo service mongodb restart

要使用MongoDB 运行以下命令

mongo

MongoDB的服务器统计,需要在MongoDB客户端键入命令db.stats()

2.语法:

2.1 use DATABASE_NAME 用于创建数据库:

db.COLLECTION_NAME.insert(document)


>db.mycol.insert({

   _id: ObjectId(7df78ad8902c),

   title: 'MongoDB Overview', 

   description: 'MongoDB is no sql database',

   by: 'tutorials yiibai',

   url: 'http://www.yiibai.com',

   tags: ['mongodb', 'database', 'NoSQL'],

   likes: 100

})

这里 mycol  是集合的名称,如前面的教程中创建。如果集合在数据库中不存在,那么MongoDB 将创建此集合,然后把它插入文档。

插入文档中,如果我们不指定_id参数,然后MongoDB 本文档分配一个独特的ObjectId。

_id 是12个字节的十六进制数,唯一一个集合中的每个文档。 12个字节被划分如下:

_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

 

插入单个查询的多个文档,可以传递一个数组

>db.post.insert([

{

   title: 'MongoDB Overview', 

   description: 'MongoDB is no sql database',

   by: 'tutorials yiibai',

   url: 'http://www.yiibai.com',

   tags: ['mongodb', 'database', 'NoSQL'],

   likes: 100

},

{

   title: 'NoSQL Database', 

   description: 'NoSQL database doesn't have tables',

   by: 'tutorials yiibai',

   url: 'http://www.yiibai.com',

   tags: ['mongodb', 'database', 'NoSQL'],

   likes: 20, 

   comments: [

      {

         user:'user1',

         message: 'My first comment',

         dateCreated: new Date(2013,11,10,2,35),

         like: 0 

      }

   ]

}

])

 

3. 查询

3.1 显示一个格式化的结果:db.mycol.find().pretty()

3.2 AND 在MongoDB中用法

在 find() 方法,如果通过多个键分离’,’,那么 MongoDB 处理 AND 条件。AND 基本语法如下所示

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

如:db.post.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty()

3.3 MongoDB中OR

>db.mycol.find(   {      $or: [     {key1: value1}, {key2:value2}      ]   } ).pretty()

db.post.find({$or:[{"by":"yiibai"},{"title": "MongoDB Overview"}]}).pretty()

 

3.4 and 和or 一块使用:

QL where子句 为 'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'

>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai"}, {"title": "MongoDB Overview"}] }).pretty()

 

4. 更新

语法:db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

db.mycol.update({‘title’:’MongoDB Overview’},{$set:{‘title’:’New MongoDB Tutorial’}})

MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置’multi’ 为true

db.mycol.update({‘title’:’MongoDB Overview’},{$set:{‘title’:’New MongoDB Tutorial’}},{multi:true})  

  

5. 投影

MongoDB 的find()方法,在 MongoDB查询 文档解释接受第二个可选参数是要检索的字段列表。在MongoDB中,当执行find()方法,那么它会显示一个文档所有字段。要限制这一点,需要设置的字段列表值1或0。 1用来显示字段而0是用来隐藏字段。

find()方法具有投影基本语法如下

>db.COLLECTION_NAME.find({},{KEY:1})

>db.post.find({},{"title":1,_id:0})

  

6.limit 和skip

 

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) # skip 默认是0

db.post.find({},{"title":1,_id:0}).limit(1).skip(2)    跳过前两条,查寻一条结果

  

 

 

 

  

转载于:https://www.cnblogs.com/wwha/articles/5978101.html

你可能感兴趣的:(数据库,大数据)