zoukankan      html  css  js  c++  java
  • Document 操作

    MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。

    MongoDB中的文档的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。

    BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

    新增文档

    1.1 新增单一文档

    1.1.1 insert函数

    语法格式为:db.COLLECTION_NAME.insert(document)。

    向test集合中插入单个文档。

    db.test.insert({title:'北京尚学堂',description:'程序员的摇篮',url:'www.bjsxt.com',tags:['java','大数据','python'],'time':new ISODate('2020-01-01T10:10:10.000Z')})

    1.1.2 save函数

    向test集合中插入单个文档。

    db.test.save({title:'百战程序员',description:'身经百战,高薪相伴',url:'www.itbaizhan.cn',tags:['javaWeb实战','数据库实战','微服务实战']})

    1.1.3 insertOne函数

    MongoDB3.2以后的版本中,提供了insertOne()函数用于插入文档。

    向test集合中插入单个文档。

    db.test.insertOne({title:'尚学堂大数据',description:'培养大数据人才的摇篮',url:'www.bjsxt.com',tags:['hadoop','spark','Hbase']})

    1.2 批量新增文档

    1.2.1 insert函数

    向test集合中批量插入多个文档

    db.test.insert([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.2.2 save函数

    向test集合中批量插入多个文档

    db.test.save([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.2.3 insertMany函数

    MongoDB3.2以后的版本中,提供了insertMany函数用于插入文档。

    语法格式:db.COLLECTION_NAME.insertMany([{},{},{},.....])

    向test集合中批量插入多个文档

    db.test.insertMany([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.3 通过变量新增文档

    Mongo Shell工具允许我们定义变量。所有的变量类型为var类型。也可忽略变量类型。变量中赋值符号后侧需要使用小括号来表示变量中的值。我们可以将变量作为任意插入文档的函数的参数。

    语法格式:变量名=(<变量值>)

    1.3.1 变量新增单一文档

    定义变量

    document=({title:'SpringCloud',tags:['Spring Cloud Netflix','Spring Cloud Security','Spring Cloud Consul']})

    新增文档

    db.test.insert(document);

    db.test.save(document);

    db.test.insertOne(document);

    1.3.2 变量批量新增文档

    定义变量

    document=([{title:'SpringCloud',tags:['Spring Cloud Netflix','Spring Cloud Security','Spring Cloud Consul']},{title:'SpringBoot',tags:['Spring Boot']}])

    新增文档

    db.test.insert(document);

    db.test.save(document);

    db.test.insertMany(document);

    查询文档

    MongoDB是通过findOne()和find()函数来实现文档查询的。

    2.1 基础应用

    2.1.1 findOne函数

    findOne函数用于查询集合中的一个文档。语法如下:

    db.集合名称.findOne({

        <query>},

        {<projection>

    });

    参数解释:

    query:可选,代表查询条件。

    projection:可选,代表查询结果的投影字段名。即查询结果需要返回哪些字段或不需要返回哪些字段。

    查询stu集合中第一个文档:

    db.stu.findOne();

    db.stu.findOne({});

    查询stu集合中name字段为lisi的第一个文档:

    db.stu.findOne({'name':'lisi'});

    查询stu集合中第一个文档,且只显示name字段:

    db.stu.findOne({},{'name':1});

    查询stu集合中第一个文档,且不显示name和age字段:

    db.stu.findOne({},{'name':0,'age':0});

    注意:在projection中不能使用{'name':0, 'age':1}这种语法格式,这是错误的语法。projection只能定义要返回的字段或不返回的字段。_id字段是MongoDB维护的字段,是唯一可以在projection中独立使用的。如:{_id:0, 'name':1, 'age':1}

    2.1.2 find函数

    find函数用于查询集合中的若干文档。语法如下:

    db.stu.find({<query>},{<projection>});

    参数解释:

    query:可选,代表查询条件。

    projection:可选,代表查询结果的投影字段名。即查询结果需要返回哪些字段或不需要返回哪些字段。

    查询stu集合中的所有文档:

    db.stu.find()

    db.stu.find({})

    查询stu集合中所有name字段为lisi的文档:

    db.stu.find({'name':'lisi'});

    2.1.3 投影约束

    MongoDB中,_id字段是默认返回显示的投影字段。

    查询stu集合中所有文档,且只显示name字段:

    db.stu.find({},{'name':1});

    查询stu集合中所有文档,且显示除name字段以外的其他字段:

    db.stu.find({},{'name':0});

    _id字段,在投影约束中不能互斥,否则抛出异常。如:{"name":1, "age":0}抛出异常。

    包含_id字段,在投影约束中可以和其他字段互斥约束,但是,_id字段必须为非投影显示约束(0), 如:{"name":1, "_id":0} 正确的。

    包含_id字段,在投影约束中,如果和其他字段投影约束互斥,且_id字段投影约束为显示(1),会抛出异常,如:{"_id":1, "name":0} 抛出异常。

    常用方式: {"_id":0, "xxx":1}   {"xxx":0}

    2.2 pretty函数

    pretty函数用于格式化find函数查询结果。让查询结果更易查看。findOne函数自动附带格式化查询结果的能力。

    语法:

    db.stu.find().pretty();

    2.3 单条件逻辑运算符

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

    MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。

    MongoDB中的文档的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。

    BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

    新增文档

    1.1 新增单一文档

    1.1.1 insert函数

    语法格式为:db.COLLECTION_NAME.insert(document)。

    向test集合中插入单个文档。

    db.test.insert({title:'北京尚学堂',description:'程序员的摇篮',url:'www.bjsxt.com',tags:['java','大数据','python'],'time':new ISODate('2020-01-01T10:10:10.000Z')})

    1.1.2 save函数

    向test集合中插入单个文档。

    db.test.save({title:'百战程序员',description:'身经百战,高薪相伴',url:'www.itbaizhan.cn',tags:['javaWeb实战','数据库实战','微服务实战']})

    1.1.3 insertOne函数

    MongoDB3.2以后的版本中,提供了insertOne()函数用于插入文档。

    向test集合中插入单个文档。

    db.test.insertOne({title:'尚学堂大数据',description:'培养大数据人才的摇篮',url:'www.bjsxt.com',tags:['hadoop','spark','Hbase']})

    1.2 批量新增文档

    1.2.1 insert函数

    向test集合中批量插入多个文档

    db.test.insert([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.2.2 save函数

    向test集合中批量插入多个文档

    db.test.save([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.2.3 insertMany函数

    MongoDB3.2以后的版本中,提供了insertMany函数用于插入文档。

    语法格式:db.COLLECTION_NAME.insertMany([{},{},{},.....])

    向test集合中批量插入多个文档

    db.test.insertMany([{title:'java',tags:['JavaSE','JavaEE','JavaME']},{title:'ORM',tags:['Mybatis','Hibernate']},{title:'Spring',tags:['SpringMVC','SpringBoot','SpringCloud']}])

    1.3 通过变量新增文档

    Mongo Shell工具允许我们定义变量。所有的变量类型为var类型。也可忽略变量类型。变量中赋值符号后侧需要使用小括号来表示变量中的值。我们可以将变量作为任意插入文档的函数的参数。

    语法格式:变量名=(<变量值>)

    1.3.1 变量新增单一文档

    定义变量

    document=({title:'SpringCloud',tags:['Spring Cloud Netflix','Spring Cloud Security','Spring Cloud Consul']})

    新增文档

    db.test.insert(document);

    db.test.save(document);

    db.test.insertOne(document);

    1.3.2 变量批量新增文档

    定义变量

    document=([{title:'SpringCloud',tags:['Spring Cloud Netflix','Spring Cloud Security','Spring Cloud Consul']},{title:'SpringBoot',tags:['Spring Boot']}])

    新增文档

    db.test.insert(document);

    db.test.save(document);

    db.test.insertMany(document);

    查询文档

    MongoDB是通过findOne()和find()函数来实现文档查询的。

    2.1 基础应用

    2.1.1 findOne函数

    findOne函数用于查询集合中的一个文档。语法如下:

    db.集合名称.findOne({

        <query>},

        {<projection>

    });

    参数解释:

    query:可选,代表查询条件。

    projection:可选,代表查询结果的投影字段名。即查询结果需要返回哪些字段或不需要返回哪些字段。

    查询stu集合中第一个文档:

    db.stu.findOne();

    db.stu.findOne({});

    查询stu集合中name字段为lisi的第一个文档:

    db.stu.findOne({'name':'lisi'});

    查询stu集合中第一个文档,且只显示name字段:

    db.stu.findOne({},{'name':1});

    查询stu集合中第一个文档,且不显示name和age字段:

    db.stu.findOne({},{'name':0,'age':0});

    注意:在projection中不能使用{'name':0, 'age':1}这种语法格式,这是错误的语法。projection只能定义要返回的字段或不返回的字段。_id字段是MongoDB维护的字段,是唯一可以在projection中独立使用的。如:{_id:0, 'name':1, 'age':1}

    2.1.2 find函数

    find函数用于查询集合中的若干文档。语法如下:

    db.stu.find({<query>},{<projection>});

    参数解释:

    query:可选,代表查询条件。

    projection:可选,代表查询结果的投影字段名。即查询结果需要返回哪些字段或不需要返回哪些字段。

    查询stu集合中的所有文档:

    db.stu.find()

    db.stu.find({})

    查询stu集合中所有name字段为lisi的文档:

    db.stu.find({'name':'lisi'});

    2.1.3 投影约束

    MongoDB中,_id字段是默认返回显示的投影字段。

    查询stu集合中所有文档,且只显示name字段:

    db.stu.find({},{'name':1});

    查询stu集合中所有文档,且显示除name字段以外的其他字段:

    db.stu.find({},{'name':0});

    _id字段,在投影约束中不能互斥,否则抛出异常。如:{"name":1, "age":0}抛出异常。

    包含_id字段,在投影约束中可以和其他字段互斥约束,但是,_id字段必须为非投影显示约束(0), 如:{"name":1, "_id":0} 正确的。

    包含_id字段,在投影约束中,如果和其他字段投影约束互斥,且_id字段投影约束为显示(1),会抛出异常,如:{"_id":1, "name":0} 抛出异常。

    常用方式: {"_id":0, "xxx":1}   {"xxx":0}

    2.2 pretty函数

    pretty函数用于格式化find函数查询结果。让查询结果更易查看。findOne函数自动附带格式化查询结果的能力。

    语法:

    db.stu.find().pretty();

    2.3 单条件逻辑运算符

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

    在MongoDB中字符串也可以比较大小。按照Unicode编码顺序比较大小。

    日期可以比较大小: 过往 < 现在 < 未来。

  • 相关阅读:
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    String详解
    数据库中索引相关基础知识
    论文笔记:RankIQA
    目标检测 | 火焰烟雾检测论文(实验部分)
    图像质量评价:合成失真图像方法
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14366323.html
Copyright © 2011-2022 走看看