• mongodb——文档操作


    文档基本CRUD

    文档(document)的数据结构是和JSON类似的BSON

    文档的插入

    单个文档的插入

    使用insert()或save()方法向集合插入文档,语法如下:

    db.collection.insert(
    	<document or array of ducuments>,
    	{
    		writeConcern: <document>,
    		ordered: <boolean>
    	}
    )
    
    Parameter Type Description
    document document or array 要插入到集合中的文档或文档数组
    writeConcern document
    ordered bolean 如果为真,则按顺序插入数组中的文档,如果其中一个文档出现错误,MongoDB将返回而不处理数组中的其余文档。如果为假,则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的主文档。2.6+默认为true

    【示例】

    向comment的集合中插入一条测试数据

    > db.comment.insert({"articleId": 10000, "content": "今天天气真好,阳光明媚", "userId": 1001, "nickname": "Rose", "createdatetime": new Date(), "lukenum": NumberInt(10), "state": null})
    WriteResult({ "nInserted" : 1 })
    

    批量插入

    语法:

    db.collection.insertMany(
    	[<document 1>, <document 2>, ...]
    	{
    		writeConcern: <document>,
    		ordered: <boolean>
    	}
    )
    

    文档的基本查询

    查询数据的语法格式如下:

    db.collection.find(<query>, [projection])
    

    参数:

    Parameter Type Description
    query document
    projection document

    【实例】

    查询所有

    > db.comment.find()
    > db.comment.find({})
    

    这里你会发现每条文档都会有一个_id字段,这个相当于我们原来关系型数据表的主键。当你插入文档记录时没后指定该字段,MongoDB会自动创建,类型为ObjectId。

    如果我们在插入文档记录时指定该字段也可以,其类型可以时ObjectID类型,也可以是MongoDB支持的任意类型。

    如果我想按一定条件来查询,比如我想查询userid为1003的记录。

    > db.comment.find({userid: '1003'})
    

    如果你只需要返回符合条件的第一条数据,我们可以使用findOne命令来实现,语法和find一样。

    > db.comment.findOne()
    > db.comment.findOne({userid: 10003})
    

    投影查询

    如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)

    文档的更新

    主要关注前四个参数即可

    【实例】

    覆盖的修改

    > db.comment.update({_id: 1}, {likenum: NUmberInt(1001)})
    

    执行后发现,这条文档除了likenum其它字段都没有了

    局部修改

    我们使用修改器$set来实现

    > db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}})
    

    批量修改

    // 默认值修改第一条数据
    > db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}})
    // 修改所有符合条件的数据
    > db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}}, {mutli: true})
    

    新版本支持updateMany()

    删除文档

    删除文档语法结构:

    db.collection.remove()
    

    将数据全部删除

    db.collection.remove({})
    

    删除_id=1的记录

    db.collection.remove({_id: "1"})
    

    文档的分页查询

    统计查询

    统计查询使用count()方法,语法如下:

    db.collection.count(query, options)
    

    参数:

    Parameter Type Description
    query document 查询选择条件
    options document 可选。用于修改计数的外选项

    分页列表查询

    可以使用limit方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

    基本语法如下所示:

    > db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
    

    排序查询

    sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1指定排序的方式,其中1为升序排列,而-1是用于降序排列。

    语法如下所示:

    db.COLLECTION.find().sort({key:1})
    

    skip、limit、sort放在一起执行的时候,执行的顺序是sort、skip、limit,和命令编写顺序无关

    文档的更多查询

    正则的复杂条件查询

    MongoDB的模糊查询是通过正则表达式的方式实现的,格式为:

    db.COLLECTION.find({fields: /正则表达式/})
    

    比较查询

    db.COLLECTION.find({fields: {$gt: value}})
    db.COLLECTION.find({fields: {$lt: value}})
    db.COLLECTION.find({fields: {$gte: value}})
    db.COLLECTION.find({fields: {$gte: value}})
    db.COLLECTION.find({fields: {$ne: value}})
    

    包含查询

    包含 $in

    不包含 $nin

    条件查询

    我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。

    格式为:

    $and: [{}, {}, {}]
    

    如果两个以上条件之间是或者的关系,我们使用操作符$or

    格式为:

    $or: [{},{},{}]
    
  • 相关阅读:
    性能测试必备知识(10)- Linux 是怎么管理内存的?
    stat 命令家族(4)- 详解 iostat
    stat 命令家族(3)- 详解 mpstat
    stat 命令家族(2)- 详解 pidstat
    性能分析(6)- 如何迅速分析出系统 CPU 的瓶颈在哪里
    性能分析(5)- 软中断导致 CPU 使用率过高的案例
    实体类转xml
    运气一直好,就不只是运气了——记中学七年
    (数据科学学习手札93)利用geopandas与PostGIS进行交互
    JVM系列之一:内存区域和内存溢出
  • 原文地址:https://www.cnblogs.com/Gazikel/p/15437898.html
Copyright © 2020-2023  润新知