zoukankan      html  css  js  c++  java
  • MongoDB学习(二)

    常用语句:

    创建数据库:use database_name

    示例:use myfisrtmongoDB 

    shell下提示:switched to db myfisrtmongoDB 表示成功

    但此时用show dbs命令任然无法查看到新创建的数据库,需要插入第一条数据后,才可以查看。

    删除数据库:db.dropDatabase() 

    该命令是删除当前的数据库

    提示:{"dropped":"myfirstmongoDB","ok":1}

    插入文档:db.collections_name.insert(document)

    表示在当前数据库的名为collections_name的集合中插入一条文档

    示例:db.cols.insert({"content":"myFirstRecorder","by":"insaneXs"})

    记录插入完成后,可以通过db.collections_name.find()命令来查看该数据库下名为collections_name的集合中全部的记录(文档)。

    我们也可以将数据定义成一个变量,然后再通过上述命令插入

    示例:document_name = {"content":"insertByDocumentVar"}

    db.cols.insert(document_name)

    定义了一个名为document_name的document变量,然后将document变量插入到集合中。

    更新文档:mongoDB更新文档有两种方式,update()和save()

    update()的语法格式:

    db.collections_name.update(criteria, objNew, upsert, multi, writeConcern)

    criteria:标准,即是查询条件,相当于SQL语句中的where语句

    objNew: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的部分

    upsert: boolean类型,可选,表示文档不存在时,是否插入该文档,true表示插入,数据库默认为false

    multi:boolean类型,可选,表示多条记录满足时,是否更新全部记录,true表示更新全部记录,数据库默认为false

    writerConcert:可选,表示抛出异常的级别

    示例:

    db.cols.update({"content":"insertByDocumentVar"},{$set:{"content":"recorderUpdateByupdate"},true,true})

    意义:

    将当前数据库下cols集合中content值为insertByDocumentVar的文档全部更新成set后的文档(字段如果存在,则更新值,不存在,则在之前基础上增加字段),如果不存在,则插入该文档。

    save():通过传入的文档来替换已有的文档

    db.collections.save(x), x即是要更新的文档,mongoDB会根据x的_id的值去数据库中查找要更新的文档,如果不存在,则插入该文档。

    示例:

    db.cols.save({"_id":ObjectId("56a860650c412f8aa5c4c25a"),"content":"updateRecorderBySave"})

    意义:将db数据库下的cols集合中的id为"56a860650c412f8aa5c4c25a"的文档替换(由于是文档被替换,因此如果新文档不含旧文档的其他字段时,其他字段将被删除。),没有则插入该记录(插入时id将不是自动生成,而就是id的值)。

    mongoDB中的更新操作符

    $inc 对一个int字段增加一个val值

    {$inc:{filed:value}}

    示例:

    db.cols.update({"count":1},{$inc : {"count":1}})

    意义:将当前数据库的cols集合中count等于1的文档中的count字段增加1

    $set 相当于sql的set field = value,全部数据类型都支持

    用法:{ $set : { field : value } }
    示例:参考文章开头

    $unset 删除某个字段

    用法:{$unset:{filed : value}}

    数据库先插入一条数据db.cols.insert{"filed1":"1","filed2":"2"};

    示例:db.cols.update({"filed1":"1"},{$unset:{"filed2":"2"}})

    用db.cols.find().pretty()查询

    看到结果为:{ "_id" : ObjectId("56a874310c412f8aa5c4c261"), "field1" : "1" }

    $push 将某个值追加到指定的filed中,该field必须要是数组

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

    示例:

    数据库先插入一条数据 db.cols.insert{"myArray":["a","b"], "count":1}

    db.cols.update({"content":1},{$push:{"c"}})

    在查询集合,可看到结果:

      "_id" : ObjectId("56a877ec04d77a4fe6e85ffb"),
      "count" : 1,
      "myArray" : [
      "a",
      "b",
      "c"
    ]

    $pushAll 和$push类似,只是$pushAll可以追加多个值到某个数组字段中

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

    示例同上,不再赘述,但是要注意字段值必须要是array

    $addToSet 仅当某个值不再数组内时,才往数组中添加这个值

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

    示例同上,field必须要是数组。

    $pop 删除数组内的一个值

    用法:

    删除数组最后一个值:{$pop :{field : 1}}

    删除数组头一个值:{$pop : {field : -1}}

    $pull 从field的数组内删除值为value的值

    用法:{$pull : {filed:value}}

    用法同上,如果有多个值为value,则全部删除

    $pullAll 从field的数组内删除在数组array中的值

    用法:{$pull : {filed : array}}

    用法同上。

    $ 操作符 表示从数组中找出是自己的那项

     因为得到的是该项的filed值,故要加上引号(红字部分)。

    看一下官方的例子:
    > t.find()
    { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] }

    > t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}}, false, true )

    > t.find()
    { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }

    需要注意的是,$只会应用找到的第一条数组项,后面的就不管了。
    还需要注意的是,$和$unset联合使用会在数组中留下一条为NULL的记录
    > t.insert({x: [1,2,3,4,3,2,3,4]}> t.find({ "_id" : ObjectId("4bde2ad3755d00000000710e"), "x" : [ 1, 2, 3, 4, 3, 2, 3, 4 ] }> t.update({x:3}, {$unset:{"x.$":1}})
    > t.find()
    { "_id" : ObjectId("4bde2ad3755d00000000710e"), "x" : [ 1, 2, null, 4, 3, 2, 3, 4 ] }



    MongoDB删除文档db.collection_name.remove()
    用法:db.collection_name.remove(query, justone)
    query:查询条件
    justone:表示有多条记录满足时,是否要同时删除,可选,默认为false

    删除一个集合中的全部文档:db.collection_name.remove({})
    只删除第一个符合条件的元素:db.collection_name.remove({条件},1)


    MongoDB查询文档:db.collection_name.find()
    将查询结果格式化显示:db_collection_name.find().pretty()

    AND条件查询:
    用法:db.collection_name.find({filed1:value,field2:value....})

    OR条件查询:
    用法:db.collection_name.find({$or:[{filed:value},{field:value}]});
    OR条件查询像是把多个条件放在一个数组中,然后由该数组构成一个文档,而AND条件查询则是各个条件直接构成一个文档。

     
    参考:http://www.runoob.com/mongodb/mongodb-tutorial.html
  • 相关阅读:
    web前端的发展态势
    AngularJs 简单入门
    css代码优化篇
    git提交报错:Please make sure you have the correct access rights and the repository exists.
    Activiti工作流框架学习
    遍历map集合的4种方法
    js设置日期、月份增加减少
    Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    webservice_rest接口_学习笔记
    相互匹配两个list集合+动态匹配${}参数
  • 原文地址:https://www.cnblogs.com/insaneXs/p/5162686.html
Copyright © 2011-2022 走看看