MongoDB中对文档的增删查改基本操作方法总结

插入文档:insert() 方法

要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法。

语法:

insert() 命令的基本语法如下:

 >db.COLLECTION_NAME.insert(document)

例子:

 >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is no sql database',    by: 'tutorials point',    url: 'http://www.jb51.net',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 100 })
这里 mycol  是集合的名称,如前面的教程中创建。如果集合在数据库中不存在,那么MongoDB 将创建此集合,然后把它插入文档。

插入文档中,如果我们不指定_id参数,然后MongoDB 本文档分配一个独特的ObjectId。

_id 是12个字节的十六进制数,唯一一个集合中的每个文档。 12个字节被划分如下:

 _id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

要插入单个查询的多个文档,可以传递一个数组 insert() 命令的文件。

示例:

 >db.post.insert([ {    title: 'MongoDB Overview',     description: 'MongoDB is no sql database',    by: 'tutorials point',    url: 'http://www.jb51.net',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 100 }, {    title: 'NoSQL Database',     description: 'NoSQL database doesn't have tables',    by: 'tutorials point',    url: 'http://www.jb51.net',    tags: ['mongodb', 'database', 'NoSQL'],    likes: 20,     comments: [        {          user:'user1',          message: 'My first comment',          dateCreated: new Date(2013,11,10,2,35),          like: 0        }    ] } ])
要插入文件,也可以使用  db.post.save(document)。 如果不指定_id在文档中,然后将其 save() 方法和 insert()方法工作一样。如果指定_id,它会替换整个数据文件,其中包含_id 指定save()方法。

删除文档:remove() 方法

MongoDB的 remove() 方法用于从集合中删除文档。remove() 方法接受两个参数。第一个是删除criteria ,第二是justOne标志:

(1)deletion criteria :(可选)删除标准,根据文件将被删除。

(2)justOne : (可选)如果设置为true或1,然后只删除一个文件。

语法:

基本语法remove()方法如下

 >db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

例子:

考虑以下数据mycol集合。

 { "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}
下面的例子将删除所有的文件,其标题是 'MongoDB Overview'

 >db.mycol.remove({'title':'MongoDB Overview'}) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >
删除只有一个。

如果有多个记录且要删除的只有第一条记录,那么设置remove()方法中justOne参数

 >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

删除所有文件:

如果不指定删除条件,然后MongoDB将从集合中删除整个文件。这相当于SQL的truncate命令。

 >db.mycol.remove() >db.mycol.find() >

查询文档:
1.find() 方法
要从MongoDB 查询集合数据,需要使用MongoDB 的 find() 方法。

语法:

基本的find()方法语法如下

 >db.COLLECTION_NAME.find()

find() 方法将在非结构化的方式显示所有的文件。

2.pretty() 方法

结果显示在一个格式化的方式,可以使用 pretty() 方法.

语法:

 >db.mycol.find().pretty()

例子:

 >db.mycol.find().pretty() {    "_id": ObjectId(7df78ad8902c),    "title": "MongoDB Overview",     "description": "MongoDB is no sql database",    "by": "tutorials point",    "url": "http://www.jb51.net",    "tags": ["mongodb", "database", "NoSQL"],    "likes": "100" } >
除了find() 方法外,还有一个 findOne() 法,返回一个文件。

RDBMS Where子句和MongoDB等同语句.

要查询文件的一些条件的基础上,可以使用下面的操作

操作 语法 例子 RDBMS 等同
Equality key db.mycol.find({"by":"tutorials point"}).pretty() where by = 'tutorials point'
Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

3.AND 在MongoDB中用法

语法:

在  find() 方法,如果通过多个键分离',',那么 MongoDB 处理 AND 条件。AND 基本语法如下所示:

 >db.mycol.find({key1:value1, key2:value2}).pretty()

例子

下面给出的例子将显示所有的教程,标题是“MongoDB Overview“

 >db.mycol.find({"by":"tutorials point","title": "MongoDB Overview"}).pretty() {    "_id": ObjectId(7df78ad8902c),    "title": "MongoDB Overview",     "description": "MongoDB is no sql database",    "by": "yiibai",    "url": "http://www.jb51.net",    "tags": ["mongodb", "database", "NoSQL"],    "likes": "100" } >
对于上面给出的例子相当于where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通过任意数量的键值对在 find 子句。

4.MongoDB中OR

语法:

OR条件的基础上要查询文件,需要使用$or关键字。OR 基本语法如下所示:

 >db.mycol.find(  {    $or: [    {key1: value1}, {key2:value2}    ]  } ).pretty()

例子

下面给出的例子将显示所有的教程,由'yiibai' 所写或标题是“MongoDB Overview '

 >db.mycol.find({$or:[{"by":"yiibai"},{"title": "MongoDB Overview"}]}).pretty() {    "_id": ObjectId(7df78ad8902c),    "title": "MongoDB Overview",     "description": "MongoDB is no sql database",    "by": "yiibai",    "url": "http://www.jb51.net",    "tags": ["mongodb", "database", "NoSQL"],    "likes": "100" } >
5.AND 和 OR 一起使用

例子

下面给出的例子将显示有像的文件大于100,其标题是“MongoDB Overview'或者是'yiibai' 。等效于 SQL where子句 为

'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'

 >db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai"}, {"title": "MongoDB Overview"}] }).pretty() {    "_id": ObjectId(7df78ad8902c),    "title": "MongoDB Overview",     "description": "MongoDB is no sql database",    "by": "yiibai",    "url": "http://www.jb51.net",    "tags": ["mongodb", "database", "NoSQL"],    "likes": "100" } >

 更新文档
 MongoDB的 update() 和 save() 方法用于更新文档的集合。 update()方法更新现有的文档值,而替换现有的文档通过的文件中 save() 方法。

1.MongoDB Update() 方法

update()方法更新现有文档值。

语法:

update() 方法的基本语法如下

 >db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

例子

考虑以下数据mycol集合。

 { "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
下面的例子将设置新标题'MongoDB Overview'的文件,更新其标题是“New MongoDB Tutorial”

 >db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >
MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置'multi' 为true

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
2.MongoDB Save() 方法

save() 方法替换现有的文档和通过新的文档 save() 方法

语法

MongoDB 的 save() 方法的基本语法如下:

 >db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

例子

下面的例子将取代文件具有_id为 '5983548781331adf45ec7'

 >db.mycol.save(    {       "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai New Topic", "by":"Yiibai"    } ) >db.mycol.find() { "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai New Topic", "by":"Yiibai"} { "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"} { "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"} >

(0)

相关推荐

  • MongoDB插入、更新、删除文档实现代码

    1 创建数据库并插入数据 use jinxt db.adou.insert({name:"jinxt",age:"28"}); //刚创建的数据库 jinxt并不在数据库的列表中, 要显示它,我们需要向 jinxt数据库插入一些数据 show dbs db.dropDatabase(); //删除数据库 2 插入文档 use jinxt db.adou.insert({name:"jinxt",age:28,sex:"男",t

  • MongoDB快速入门笔记(六)之MongoDB删除文档操作

    MongoDB是一个跨平台,面向文档的数据库,提供高性能,高可用性和易于扩展.MongoDB是工作在集合和文档上一种概念. 文档是一组键值对.文档具有动态模式.动态模式是指,在同一个集合的文件不必具有相同一组集合的文档字段或结构,并且相同的字段可以保持不同类型的数据. db.集合名称.remove({query}, justOne) query:过滤条件,可选 justOne:是否只删除查询到的第一条数据,值为true或者1时,只删除一条数据,默认为false,可选. 准备数据:把_id为1和2

  • MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 下面给大家介绍MongoDB查询文档操作的实例 先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, "

  • MongoDB快速入门笔记(六)之MongoDB的文档修改操作

    MongoDB MongoDB 是一个开源的文档数据库,并领先的 NoSQL 数据库. MongoDB 是由 c++语言编写. 文档 文档是一组键 - 值对.文件动态模式.动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据. db.集合名称.update({query},{update},upsert, multi}) query:过滤条件 update:修改内容 upsert:如果不存在查询条件查出的记录,是否插入一条数据,默认是fals

  • MongoDB快速入门笔记(三)之MongoDB插入文档操作

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 本文给大家介绍MongoDB的插入文档的方法,一起看看吧 1.文档的数据存储格式为BSON,类似于JSON.MongoDB插入数据时会检验数据中是否有"_id",如果没有会自动生成. shell操作有insert和save两种方法.当插入一条数据有

  • MongoDB修改、删除文档的域属性实例

    由于本博使用的博客程序是边开发边使用的,所以开发过程中动态创建了某些现在不需要的属性 MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每个文档可以拥有各自不同的域属性. MongoDB 中使用 db.collections.update 修改集合中若干文档的域属性,使用 $set 增加域,$unset 删除域. 删除集合中所有文档的一个域 复制代码 代码如下: db.posts.update({}, { $unset: { delet

  • PHP库 查询Mongodb中的文档ID的方法

    在IBM我的一份新工作是一名开发的后勤人员.那意味着我的大部分时间是在和数据库打交道.在我的工作流程中,我花了一些时间在MongoDB上面--这是一个文档数据库.但是在通过ID来检索记录这个操作上面我碰到了一些问题.下面的代码是最终版本,以后碰到类似的问题我可以直接引用它.如果大家也需要,希望下面对大家有所帮助. MongoDB 和 IDs 当我向一个集合中插入数据的时候,我并没有设置_id字段:如果这个字段是空的话,那么MongoDB将要自动生成一个ID来使用,这对我来说是非常不错的.然而,当

  • MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系

    MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束:另外,存入集合的文档对象甚至可以嵌入子文档,或者"子集合".他们最终都可以用类似于BJSON的格式描述.我们今天就来分析MongoDB这一特性带来的独特数据管理方式.我们还是以samus驱动为例来分析,samus驱动支持两种方式访问数据库,基本方式和linq方式,基本方式在上篇以介绍过,

  • MongoDB中对文档的增删查改基本操作方法总结

    插入文档:insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 语法: insert() 命令的基本语法如下: >db.COLLECTION_NAME.insert(document) 例子:  >db.mycol.insert({    _id: ObjectId(7df78ad8902c),    title: 'MongoDB Overview',     description: 'MongoDB is

  • Spring Boot中使用Spring-data-jpa实现数据库增删查改

    在实际开发过程中,对数据库的操作无非就"增删改查".就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate.通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中. 为了解决抽象各个Java实体基本的"增删改查"操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这

  • MySQL中对于索引的基本增删查改操作总结

    创建索引 MySQL创建索引的语法如下: CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_name (index_col_name,...) 其中对应的语法变量信息如下: [UNIQUE|FULLTEXT|SPATIAL] 中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引.全文索引.空间索引三种不同的索引类型.如果我们不指定任何关键字,则默认为普通索引. index_name

  • MongoDB集合中的文档管理

    上一博客写了集合的管理,集合里面存放的是文档,因此聪明的你应该能想到这篇是学习文档管理.要说标题应该是文档管理,不过对于文档的管理都是先获得集合对象,在集合对象上调用方法管理文档,所以标题还是对集合的管理. 在集合管理中,要管理集合首先要获得这个集合,同样文档管理也是要先获得集合对象,然后通过集合对象管理文档. 一.将文档添加到集合中 为什么要先说添加呢,因为不添加就没法说下面的查找.将文档添加到一个集合中,首先需要得到集合对象,通过几个对象调用insert(document)或save(doc

  • MongoDB入门教程之细说MongoDB数据库的增删查改操作

    看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然 傻眼了,擦,竟然开启不了,仔细观察"划线区域"的信息,发现db文件夹下有一个类似的"lock file"阻止了mongodb的开启,接下来我们要做的就 是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享.  一: Insert操作 上一篇也说过,文档是采用"K-V"格式存储的,如果大家对JSO

  • MongoDB增删查改操作示例【基于JavaScript Shell】

    本文实例讲述了MongoDB增删查改操作.分享给大家供大家参考,具体如下: MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的. Insert操作: 单条插入 var single={"name":"mei","age":22} db.user.insert(single); 循环插入 var single={"name":"tinyphp","num&quo

  • SpringBoot整合Mongodb实现增删查改的方法

    目录 一.什么是MongoDB 二.在Window10上安装MongoDB 三.配置MongoDB服务 四.启动服务 五.SpringBoot整合MongoDB 一.什么是MongoDB MongoDB与我们之前熟知的关系型数据库(MySQL.Oracle)不同,MongoDB是一个文档数据库,它具有所需的可伸缩性和灵活性,以及所需的查询和索引. MongoDB将数据存储在灵活的.类似JSON的文档中,这意味着文档的字段可能因文档而异,数据结构也会随着时间的推移而改变.文档模型映射到应用程序代码

  • Java如何操作MongoDB常用API文档

    目录 Java操作MongoDB常用API文档 1.查询指定字段 2.按条件查询 3.对查询结果排序 4.获取满足条件的前n条数据 Java使用MongoDB数据库相关API小记 MongDB数据库使用 首先介绍我的使用环境 Java操作MongoDB常用API文档 1.查询指定字段 collection.find().projection(fields(include("username","pwd"),excludeId()));//返回username与pwd

  • mongodb如何对文档内数组进行过滤的方法步骤

    本文介绍了mongodb如何对文档内数组进行过滤的方法步骤,分享给大家,具体如下: mongodb文档内包含数组,需要将数组中符合条件的数据过滤出来并返回结果集,可以用两种方式来查询group或filter. 数据源: { "_id" : ObjectId("5bbcc0c9a74db9804e78a157"), "uid" : "1000001", "name" : "zhangsan"

随机推荐