vincentmax

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编码顺序比较大小。

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

分类:

技术点:

相关文章: