`

MongoDB CRUD(insert、update、remove、find)

阅读更多

1,insert

创建document(文档) 并添加记录

       db.collection.insert({"name":"张三"})

插入指定document的数据

       db.collection.insert({"name":"李四"})

 

2,update   更新指定document的数据符合条件的数据

       语法: db.collection.update(query,update_expression,bool_upsert,bool_multi);

       bool_upsert:1表示query不存在时候就插入,0表示query不存在时不做任何操作。

       bool_multi:1表示更新所有符合条件的(等价于{multi:true}),0表示只更新一条符合条件的记录,默认值是0(只修改一条符合条件的记录)。

 

       db.collection.update({"name":"李四"},{"name":"李四五"})   更新一条符合条件的记录删除指定文档中的指定数据,且只保留name属性,其它属性将会被全部删除。强硬式文档更新。

       $set 设置属性(修改指定列的值)

       db.collection.update({"name":"李四"},{$set:{"name":"李四五"}})   更新一条符合条件的记录(当表中没有“name”为“李四”的用户的时候将没有影响数据库)

       db.collection.update({"name":"李四"},{$set:{"name":"李四五六"}},{multi:true})  更新所有符合条件的记录

       db.collection.update({"name":"李四"},{$set:{"name":"李四五"}},{upsert:true})  如果有“name”为“李四”的用户将更新一条记录,如果没有符合条件的更新则插入一条记录。

 

      $setOnInsert   upsert 为true 的更新操作导致插入文档时,设置指定字段的值,如果更新不导致插入时$ setOnInsert什么也不做。

     db.collection.update({'name':'黎明'},{$set:{"name":'四大天王黎明'},$setOnInsert:{'loc':'香港'}},{upsert:true}) 

    

 

      $unset删除属性(删除指定列)

         db.collection.update({"name":"李四"},{$unset:{"age":1},0,1})  删除所有符合条件记录的age属性。

      $inc  修改器 (类似编程语言中的+=)

       语法:{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }

        db.collection.update({"name" : "李四"},{$inc:{age:10}})   将李四的年龄增加10岁

       db.collection.update({"name" : "李四"},{$inc:{age:-10}})   将李四的年龄减少10岁

     $rename 更新字段名

      db.user.update({"name" : "李四"},{$rename:{age:'年龄'}})  将李四的“age”属性名称改为“年龄”

 

3,remove 

       删除指定文档中的指定数据

      语法:db.collection.remove(查询表达式,选项);

      选项 justOne:true/false  是否只删一行,默认是false

      eg:

      db.collection.remove({"age":20});//删除所有年龄为20的 等价于db.collection.remove({"age":20},false);

      db.collection.remove({"age":20},1);  或 db.collection.remove({"age":20},true); //只删除一个年龄为20的

       db.collection.remove({})

       注意:在3.2之后的版本删除语法调整为deleteOne   或者 deleteMany了

4,find   查询指定document的数据

       语法: db.collection.find(查询表达式,查询的列)

       db.collection.find({查询条件})   查询出所有符合条件的数据

       db.collection.findOne({查询条件}) 查询一条符合条件的数据

       db.collection.find({"name":{$regex: '西', $options:'i'}})    模糊查询name中包含西的所有记录

       db.collection.find({"name":{$regex:/西.*/i}})                    模糊查询name中包含西的所有记录

       db.collection.find({"name":/西/i})    模糊查询name中包含西的所有记录

以上三种模糊查询有什么区别呢? 他们各有什么优劣?各自的适用场景是什么?模糊查询不能用索引怎么提高查询效率呢?20160417。

      $options:'i'  表示的是大小写敏感,

 

查询表达式

$elemMatch用法:
{"contents":{$elemMatch:{"fieldId":"project_type","content":"民间文学"}}}

逻辑运算符begin
$and的用法:  逻辑与

语法: { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
{ "$and" : [{"contents":{$elemMatch:{"fieldId":"project_type","content":"民间文学"}}},{"contents":{$elemMatch:{"fieldId":"batch","content":"2"}}}]}

and 满足[]里面的所有{}条件的

$or的用法:  逻辑或    满足[]里面的其中条件之一的

语法: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
{ "$or" : [{"contents":{$elemMatch:{"fieldId":"project_type","content":"民间文学"}}},{"contents":{$elemMatch:{"fieldId":"batch","content":"2"}}}]}

 

$not的用法:逻辑非

语法: { field: { $not: { <operator-expression> } } }

db.user.find({age:{$not:{$gt:20}}});   查询不是年龄大于20的记录

注意这里和  age:{$lte:20} 不等价  这里可以查询出没有age属性的值,但是 age:{$lte:20}只能查age属性存在,且小于等于20的记录

 

$nor的用法:所有条件全部不成立

 语法:{ $nor: [ { <expression1> }, { <expression2> }, ...  { <expressionN> } ] }

db.user.find({$nor:[{'name':'zhangsan'},{age:{$gt:20}}]});   查询名字不等于“zhangsan” 并且age不是>20的记录

nor 不满足[]里面的其中任意一个{}条件的

 

 逻辑运算符end

 

比较运算符begin

 $in的用法:满足条件之一

{"provinceId":{$in:["53dc4e954bbaa3e56e7672f0", "53dc4e954bbaa3e56e7672ba"]}}

in表示满足里面的条件之一 53dc4e954bbaa3e56e7672f0 或 53dc4e954bbaa3e56e7672ba即可

注意:如果[]里面没有元素,将查询不出来符合条件的数据。

$nin的用法    不满足条件之一

{"provinceId":{$nin:["53dc4e954bbaa3e56e7672f0", "53dc4e954bbaa3e56e7672ba"]}}

nin表示不满足里面的条件之一 53dc4e954bbaa3e56e7672f0 或 53dc4e954bbaa3e56e7672ba 才行

$all的用法: 满足所有条件

{"path":{$all:["53a39830b21cdd81140b0a00", "53a398b1b21cdd81140b0a03"]}}

all表示全部满足里面的所有条件["53a39830b21cdd81140b0a00", "53a398b1b21cdd81140b0a03"]

 

$ne的用法:  不等于

{"name":{$ne:"张三"}}   姓名不等于张三的用户

 

$gt的用法 :大于

db.user.find({age:{$gt:20}});    查询年龄大于20的用户

 

$lt的用法 :小于

 

$gte 的用法 :大于等于

 

$lte的用法 :小于等于

 

 比较运算符end

 

元素运算符begin

 $exists的用法:存在

语法: { field: { $exists: <boolean> } }    查询指定属性是否存在  true表示存在,false表示不存在

db.user.find({age:{$exists:false}});   查询age属性存在的记录

db.user.find({age:{$exists:false}});   查询age属性不存在的记录

 

$mod的用法:求余取模

语法:{ field: { $mod: [ divisor, remainder ] } }   divisor 除数   余数divisor

db.user.find({age:{$mod:[10,0]}});  查询年龄除以10余数是0的记录

 

$type的用法: 根据类型查询

语法:{field:{ $type: <BSON type number> | <String alias> } }

db.user.find({age:{$type:1}}); "double" 查询age的类型是double的记录

db.user.find({age:{$type:2}}); "string" 查询age的类型是string的记录

 

元素运算符end

 

js运算符begin

$where用法:js表达式为正则为真

注意:where 把二进制数据转换成json数据之后再做的查询,这样运行的效率比较低下,一般不推荐使用

db.user.find({$where:'this.age>20&&this.age<25||this.age>80&&this.age<90'});

 

$regex用法:正则表达式查询

语法:

{ <field>: { $regex: /pattern/, $options: '<options>' } }

{ <field>: { $regex: 'pattern', $options: '<options>' } }

{ <field>: { $regex: /pattern/<options> } }

 

db.user.find({"name":{$regex:/^san.*/i}})  查询以"san"开头的记录

db.user.find({"name":{$regex:/san.*/i}})   查询包含"san"开头的记录

 

注意:正则表达式的效率也很低下,能不用尽量不要用

js运算符end

 

 

 

 

空间定位与距离检索

http://blog.csdn.net/flamingsky007/article/details/39208837



 

分享到:
评论

相关推荐

    nodetunes:MongoDB CRUD练习

    "nodetunes" 是一个针对 MongoDB 的 CRUD(创建、读取、更新、删除)操作的实践项目,旨在帮助开发者加深对 MongoDB 和 JavaScript 的使用理解。 在这个项目中,"nodetunes" 涉及到以下关键知识点: 1. **MongoDB ...

    Go-golangmgo代码自动生成器生成对mongodb的CRUD操作代码

    生成器会根据你的模型自动生成CRUD操作的函数,如`Insert()`, `Find()`, `Update()`, `Remove()`等。 4. **整合到项目**:将生成的代码引入到你的项目中,直接调用这些函数即可实现对MongoDB的操作,无需手动编写...

    mongodb的CRUD

    在Java和Spring框架中,MongoDB提供了丰富的API和工具来支持数据的CRUD(创建、读取、更新、删除)操作。本文将深入探讨MongoDB在这些方面的应用。 **创建(Create)** 在MongoDB中,创建数据主要通过`insertOne()`...

    mongodb3.2.4说明文档

    CRUD 是 Create(创建)、Read(读取)、Update(更新)和 Delete(删除)的缩写,用于描述对数据库的基本操作。MongoDB 提供了一套完整的 API 用于执行 CRUD 操作。 **3.2 MongoDB CRUD 概念** - **插入操作**:...

    玩转MongoDB4.0从入门到实践、MongoDB基本操作之CRUD、进阶之聚合、中索引的重要性、数据分片

    这一章节将详细介绍MongoDB中的基本操作——创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete),即CRUD操作: 1. **插入文档**:利用`insert`或`insertOne`命令插入单个文档;使用`insertMany`批量插入多...

    mongodb部署配置及应用

    MongoDB提供了丰富的命令和函数来执行这些操作,比如使用`insert()`方法添加数据,`find()`方法读取数据,`update()`方法更新数据,以及`remove()`方法删除数据。 ### 8. 索引管理与执行计划 为了提高查询效率,...

    mongodb介绍及环境搭建

    - **CRUD操作**:MongoDB提供了简单易用的命令来进行数据的增删改查。 - **插入数据**:使用`insert`命令向集合中插入文档。 ```bash db.person.insert({"name": "itachi", "age": 26}) ``` - **查询数据**:...

    mongodb数据库demo

    - **Repository接口**: 可以定义自定义的CRUD操作,通过继承MongoRepository或CustomRepository接口实现。 4. **示例代码解析** - **配置MongoDB**: 配置MongoDB的数据源,包括连接地址、数据库名等。 - **实体...

    mongodb java driver 2.11

    例如,可以通过`DBCollection`接口的`insert()`, `find()`, `update()`, `remove()`等方法执行相应的数据库操作。 3. **文档模型**:Java驱动程序将MongoDB的BSON(Binary JSON)文档映射为Java对象,便于在Java...

    Python Library-mongodblibrary

    4. **文档操作**:插入文档通常用`Insert Document`,更新文档常用`Update Document`,如果需要替换整个文档,可以使用`Replace Document`。查询文档时,可以使用`Find Documents`配合查询条件,如字段、值和操作符...

    MongoDB入门学习

    ### MongoDB入门学习...以上介绍了MongoDB的基本概念、安装配置方法以及常用的CRUD操作和索引管理技巧,对于初学者来说是一个很好的起点。通过这些基础知识的学习,可以帮助用户快速上手MongoDB并应用于实际项目中。

    MongoDB手册

    MongoDB提供了强大的CRUD(创建、读取、更新、删除)功能,使得开发者能够轻松地对数据进行操作。 ##### 3.1 MongoDB CRUD 概述 MongoDB的CRUD操作是指对数据库中的文档进行增删改查的操作。这些操作可以通过...

    MongoDB学习和使用.pptx

    MongoDB 支持四种基本操作:创建(insert)、读取(find)、更新(update)和删除(remove),简称为 CRUD 操作。创建新文档时,可以向集合中插入一个或多个文档,如示例所示: ```javascript db.test.insert({ ...

    MongoDB基础

    - **CRUD操作**:创建(Create)、读取(Read)、更新(Update)、删除(Delete)是MongoDB的基本操作,对应的方法有`insert()`, `find()`, `update()`, `remove()`等。 以上内容只是MongoDB基础知识的冰山一角,深入学习...

    MongoDB安装环境验证.pdf

    首先,验证目的旨在确认MongoDB在各种操作系统环境下能否顺利运行,包括数据库的安装、自动启动、创建数据库、创建业务表以及执行CRUD(创建、读取、更新、删除)操作。 在Windows平台上,MongoDB的安装过程相对...

    MongoDB增删查改

    本文将详细介绍MongoDB中的增删查改(CRUD)操作。 一、Insert操作 MongoDB的数据存储基于文档(Document),文档遵循BSON(Binary JSON)格式,与JSON相似但支持更多数据类型。插入操作主要分为单条插入和批量...

Global site tag (gtag.js) - Google Analytics