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
  • 相关阅读:
    mybatis-plus 插件
    mybatis-plus 逆向工程模板
    mybatis-plus 使用
    response.getWriter()
    String.length()和String.getBytes().length
    mybatis 中有趣的符号#与$
    html动画实现
    把我坑惨的一个update语句
    我们为什么不用 Select * 吗?
    Java 正则表达式
  • 原文地址:https://www.cnblogs.com/insaneXs/p/5162686.html
Copyright © 2011-2022 走看看