MongDB基础学习(四)

基础语法的学习

4.1 MongoDB 插入文档

(1)insert() 方法

要插入数据到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法。

(2)语法

insert() 命令的基本语法如下:db.COLLECTION_NAME.insert(document)

(3)示例

  a. 插入一个文档的语句,如下

db.web_app.insert({

name:"追梦客",

oldName:"好童话",

description:"这是一个VR旅游电子商务网站"

})

WriteResult({"nInserted" : 1 })

  b.插入多个文档,可以传递一个数组 insert() 命令的文件,如下所示:

>db.web_app.insert([{ name:"好童话",des:"这是一个o2o的vr旅游平台"},{city:"西安","address" : "www.dreamerkr.com.cn"}])

BulkWriteResult({

       "writeErrors": [ ],

       "writeConcernErrors": [ ],

       "nInserted": 2,

       "nUpserted": 0,

       "nMatched": 0,

       "nModified": 0,

       "nRemoved": 0,

       "upserted": [ ]

})

db.web_app.find()

{ "_id" :ObjectId("54d877e4ebde50baebb6c4c8"), "name" : "追梦客", "oldName" :"好童话", "description" : "这是一个VR旅游电子商务网站" }

{ "_id" :ObjectId("54d87cdfebde50baebb6c4c9"), "name" : "好童话", "des" : "这是一个o2o的vr旅游平台" }

{ "_id" :ObjectId("54d87cdfebde50baebb6c4ca"), "city" : "西安", "address" :"www.dreamerkr.com.cn" }

        可以看到插入两个document,也可以使用  db.post.save(document)。 如果不指定_id在文档中,然后将其 save() 方法和 insert()方法工作一样。如果指定_id,它会替换整个数据文件。

4.2 MongoDB 删除文档

(1)remove() 方法

       remove() 方法用于从集合中删除文档。remove() 方法接受两个参数。第一个是deletion criteria ,第二是justOne标志:

              deletion criteria :(可选)删除标准,根据文件将被删除。

             justOne: (可选)如果设置为true或1,然后只删除一个文件。

(2) 语法:

         语法remove()方法如下:>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

(3)示例

  a.查询前面创建的web_info集合,如下所示:

db.web_info.find()

{ "_id" :ObjectId("54d82d94dd625e55ab00b9b2"), "address" :"www.dreamerkr.com.cn" }

{ "_id" :ObjectId("54d87cdfebde50baebb6c4ca"), "city" : "西安", "address" :"www.dreamerkr.com.cn" }

{ "_id" : ObjectId("54d87cdfebde50baebb6c4c9"),"name" : "好童话", "des" : "这是一个o2o的vr旅游平台" }

b.删除所有的文件,其address值为 ' www.dreamerkr.com.cn '

> db.web_info.remove({"address" :"www.dreamerkr.com.cn"})

WriteResult({"nRemoved" : 2 })

db.web_info.find()

{ "_id" :ObjectId("54d87cdfebde50baebb6c4c9"), "name" : "好童话", "des" : "这是一个o2o的vr旅游平台" }

c.删除只有一个

     如果有多个记录且要删除的只有第一条记录,那么设置remove()方法中justOne参数,如下所示:

db.web_info.remove({},1)

WriteResult({"nRemoved" : 1 })

db.web_info.find()

{"_id" : ObjectId("54d82d94dd625e55ab00b9b2"),"address" : "www.dreamerkr.com.cn" }

{"_id" : ObjectId("54d87cdfebde50baebb6c4ca"),"city" : "西安", "address" : "www.dreamerkr.com.cn" }

d.删除所有文件

      如果不指定删除条件,然后MongoDB将从集合中删除整个文件

> db.demo.remove({})

WriteResult({ "nRemoved" : 2 })

> db.demo.find()

4.3 MongoDB 更新文档

(1)update() 方法

               update() 和 save() 方法用于更新文档的集合。 update()方法更新现有的文档值,而save()方法如果文档不存在,则会插入新的文档对象

(2)语法:

              update() 方法的基本语法如下:db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA,UPDATED_DATA)

(3)示例

    a.查询前面创建的score集合,如下所示:

db.score.find();

{ "_id" :ObjectId("54d9c3896638c1af0d2b1203"), "name" :"c1", "cn" : 88 }

{ "_id" :ObjectId("54d9c3e86638c1af0d2b1204"), "name" :"c2", "cn" : 88 }

    b.只更新单一的文件,其name值为 “ zhangsan”

db.score.update({"cn":{$gt:80}},{$set:{"name":"zhangsan"}})

WriteResult({ "nMatched" : 1,"nUpserted" : 0, "nModified" : 1 })

>db.score.find();

{ "_id" :ObjectId("54d9c3e86638c1af0d2b1204"), "name" :"c2", "cn" : 88 }

{ "_id" :ObjectId("54d9c3896638c1af0d2b1203"), "name" :"zhangsan", "cn" : 88 }

    c. 更新多个需要设置参数置'multi' 为true,如下所示更新了两条记录:

db.score.update({"cn":{$gt:80}},{$set:{"cn":89}},{multi:true})

WriteResult({ "nMatched" : 2,"nUpserted" : 0, "nModified" : 2 })

db.score.find();

{ "_id" :ObjectId("54d9c3e86638c1af0d2b1204"), "name" :"c2", "cn" : 89 }

{ "_id" :ObjectId("54d9c3896638c1af0d2b1203"), "name" :"zhangsan", "cn" : 89 }

    d. MongoDB的更新除了set操作符,还有其他的操作符,关于它们的功能就不做详细列出,下面列表会其他的操作符做简单描述:

序号

类型

描述

1

$inc

用法:{$inc:{field:value}}

作用:对一个数字字段的某个field增加value

示例:db.score.update({"cn":{$gt:80}},{$inc:{"cn":8}},{multi:true})

2

$unset

用法:{$unset:{field:1}}

作用:删除某个字段field

3

$push

用法:{$push:{field:value}}

作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型

4

$pushAll

用法:{$pushAll:{field:value_array}}

作用:用法同$push一样,只是$pushAll可以一次追加多个值到一个数组字段内。

5

$addToSet

用法:{$addToSet:{field:value}}

作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。

6

$pop

用法:删除数组内第一个值:{$pop:{field:-1}}、删除数组内最后一个值:{$pop:{field:1}}

作用:用于删除数组内的一个值

7

$pull

用法:{$pull:{field:_value}}

作用:从数组field内删除一个等于_value的值

8

$pullAll

用法:{$pullAll:value_array}

作用:用法同$pull一样,可以一次性删除数组内的多个值。

9

$rename

用法:{$rename:{old_field_name:new_field_name}}

作用:对字段进行重命名

4.4 MongoDB 查询文档

(1)find() 方法

         要从MongoDB 查询集合数据使用MongoDB 的 find() 方法,还存在一个findOne()方法,它是返回一个文件。

(2)语法

         基本的find()方法语法如下:db.COLLECTION_NAME.find()。此方法将在非结构化的方式显示所有的文件,要显示在一个格式化的方式,在后面跟上pretty() 方法。

(3)示例

> db.web_info.find().pretty()

{ "_id" :ObjectId("54d82d94dd625e55ab00b9b2"), "address" :"www.hth.tv" }

{

       "_id": ObjectId("54d87cdfebde50baebb6c4ca"),

       "city": "西安",

       "address": "www.hth.tv"

}

{

       "_id": ObjectId("54d87cdfebde50baebb6c4c9"),

       "name": "好童话",

       "des": "这是一个o2o的vr旅游平台"

}

(4)RDBMS Where子句和MongoDB等同语句,要查询文件的一些条件的基础上,比较如下:

操作

语法

例子

RDBMS 等同

Equality

{<key>:<value>}

db.score.find({"cn":88}).pretty()

where cn = 88

Less Than

{<key>:{$lt:<value>}}

db.score.find({"num":{$lt:50}}).pretty()

where num < 50

Less Than Equals

{<key>:{$lte:<value>}}

db.score.find({"num":{$lte:50}}).pretty()

where num <= 50

Greater Than

{<key>:{$gt:<value>}}

db.score.find({"num":{$gt:50}}).pretty()

where num > 50

Greater Than Equals

{<key>:{$gte:<value>}}

db.score.find({"num":{$gte:50}}).pretty()

where num >= 50

Not Equals

{<key>:{$ne:<value>}}

db.score.find({"num":{$ne:50}}).pretty()

where num != 50

(5)AND与OR在MongoDB中用法

 a. MongoDB的与操作

       在  find() 方法,如果通过多个键分离',',本语法如下所示:db.score.find({key1:value1, key2:value2}).pretty()

 b.MongoDB的或操作

   MongoDB的或操作查询,需要使用$or关键字。OR 基本语法如下所示: 

>db. score.find(

   {

      $or: [

            {key1: value1}, {key2:value2}

      ]

   }

).pretty()

c.MongoDB的与和或进行组合查询 示例

db.web_info.find({$and:[{"address": "www.hth.tv"},{$or:[{"name" : "好童话"},{"city" : "西安"}]}]}).pretty()

{

       "_id": ObjectId("54d87cdfebde50baebb6c4ca"),

       "city": "西安",

       "address": "www.hth.tv"

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值