II.MongoDB CRUD Operations(CRUD操作)
Recipe 2-1. Create a Collection(创建一个容器)
1.创建容器
db.createCollection("person")
2.查看已经创建的容器
show collections
Recipe 2-2. Create Capped Collections(创建有限制容器)
1.创建一个student容器,字节大小是1000,最大存放文档(document)是2
db.createCollection("student",{capped: true,size:1000,max:2})
2.查看是否是有限制的容器
db.student.isCaped()
3.插入数据
db.student.insert([{ "_id" : 10001, "name" : "Taanushree AS", "age" : 10 },{ "_id" : 10002, "name" : "Aruna M S", "age" :14 }])
4.查看数据,会看到插入的两条数据10001和10002
db.student.find()
5.按照降序查看数据,默认是_id
db.student.find().sort({$natural:-1})
6.由于容器中已经有2条数据,是到达瓶颈了,所以再次插入数据,之前的其中一条数据会被覆盖
db.student.insert({_id:10003,name:"Anba V M",age:16})WriteResult({ "nInserted" : 1 })
7.再次查看数据,发现10001数据被10003替换了
Recipe 2-3. Insert Documents(插入文档,即数据)
插入的命令有这三个
db.collection.insertOne inserts a single document
db.collection.insertMany inserts multiple documents
db.collection.insert inserts a single document or multiple documents
1.插入一条数据
db.person.insertOne({_id:1001,name:"Taanushree AS",age:10})
2.插入多条数据
db.person.insertMany([{_id:1003,name:"Anba V M",age:16},{_id:1004,name:"shobana",age:44}])
Recipe 2-4. Query Documents(查询文档,即数据)
1.查询所有数据
db.person.find({}) 或 db.person.find()
2.指定条件查询
db.person.find({name:"shobana"})
3.使用查询符号,如以下例子,age大于10的数据
db.person.find({age:{$gt:10}})
4.查询并的关系,如下例子,name和age两条件都要满足
db.person.find({ name:"shobana",age:{$gt:10}})
5.查询或的关系,如下例子,name或age其中之一满足即可
db.person.find( { $or: [ { name: "shobana" }, { age: { $eq:20 } } ] } )
Recipe 2-5. Update Documents(更新文档,即数据)
更新的命令有:
db.collection.updateone to modify a single document
db.collection.updateMany to modify multiple documents
db.collection.replaceone to replace the first matching document in the collection that matches the filter
1.更新一条数据
db.student.updateOne({name: "Joshi"},{$set:{"marks.english": 20}})
2.更新多条数据
db.student.updateMany( { "result":"fail" }, { $set: { "marks.english": 20, marks.maths: 20 } })
3.替换一个文档,即整条数据
db.student.replaceOne( { name: "John" }, {_id:1001,name:"John",marks:{english:36,maths:39},result:"pass"})
4.注意,以上更新不能更新_id
Recipe 2-6. Delete Documents(删除文档,即数据)
删除的命令有:
db.collection.deleteOne to delete a single document
db.collection.updateMany to delete multiple documents
1.只删除一条记录
db.student.deleteOne({name: "John"})
2.删除多条记录
db.student.deleteMany({name: "Jack"})
3.删除容器中所有的文档(数据)
db.student.deleteMany({})
Recipe 2-7. Work with Mongo Import(导入数据)
1.在 C:\Sample\文件夹下创建一个student.csv文件。内容如下:
_id,name,class
1,John,II
2,James,III
3,Joshi,I
2.执行以下语句(控制台切换到Mongodb安装的bin目录就行,不需要进入mongodb)
mongoimport --db student --collection students --type csv --headerline --file c:\Sample\student.csv
3.查询数据
use student
show collections
db.students.find()
Recipe 2-8. Work with Mongo Export(导出数据)
1.执行如下命令
C:\Program Files\MongoDB\Server\4.0\bin>mongoexport --db student --collection students --out C:\Sample\student.json
Recipe 2-9. Query Embedded Documents(查询嵌套文档,即数据)
1.employee的address又是一个文档,所以查询是
db.employee.find( { address: { previous:"Cresent Street",current:"234,Bald Hill Street" }} )
2.查询嵌套文档的某个域,如address中的previous作为条件
db.employee.find( { "address.previous": "Cresent Street" } )
Recipe 2-10. Working with Arrays(数组使用)
准备数据
db.employeedetails.insertMany([
{ name: "John", projects: ["MongoDB", "Hadoop","Spark"],scores:[25,28,29] },
{ name: "James", projects: ["Cassandra","Spark"], scores:[26,24,23]},
{ name: "Smith",projects: [ "Hadoop","MongoDB"], scores:[22,28,26]} ] )
1.匹配一个数组
db.employeedetails.find( { projects: ["Hadoop", "MongoDB"] } )
2.查询数据中指定有某个元素
db.employeedetails.find( { projects: "MongoDB" } )
3.使用操作符号查询,如scores中大于26的数据
db.employeedetails.find( { scores:{$gt:26} } )
4.使用操作符查询数据中的范围,如scores中大于20小于24
db.employeedetails.find( { scores: { $gt: 20, $lt: 24 } } )
5.使用$elemMatch操作符--可以指定多个条件
db.employeedetails.find( { scores: { $elemMatch: { $gt: 23,$lt: 27 } } } )
6.通过索引查询一个数组元素,如scores的第二个元素大于26的数据
db.employeedetails.find( { "scores.2": { $gt: 26 } } )
7.使用$size操作,查询数组的数量,如下是数据元素数量是2的
db.employeedetails.find( { "projects": { $size: 2 } } )
8.使用$push操作
添加新的数组到指定的数据上
db.employeedetails.update({name: "Smith"},{$push:{Location:{$each:["US","UK"]}}})
9.使用$addToSet操作
添加一个新的数组到指定的数据上
db.employeedetails.update( {name: "James"}, { $addToSet:{hobbies: [ "drawing", "dancing"]} })
10.使用$pop来移除数组中的第一条或最后一条数据
移除数组中的第一条数据
db.employeedetails.update( {name: "James"},{ $pop:{scores:-1}})
移除数组中最后一条数据
db.employeedetails.update( {name: "James"},{ $pop: {scores:1}})
Recipe 2-11. Query an Array of Embedded Documents(查询嵌套数组)
1.数据准备
use student
db.studentmarks.insertMany([{name:"John",marks:[{class: "II", total: 489},{ class: "III", total: 490 }]},
{name:"James",marks:[{class: "III", total: 469 },{class: "IV",total: 450}]},
{name:"Jack",marks:[{class:"II", total: 489 },{class: "III", total: 390}]},
{name:"Smith", marks:[{class:"III", total: 489}, {class: "IV", total: 490}]},
{name:"Joshi",marks:[{class: "II", total: 465}, { class: "III",total: 470}]}])
2.查询marks的class为II和total为489
db.studentmarks.find( { "marks": {class: "II", total: 489}})
3.数组的一个域用于条件
db.studentmarks.find( { 'marks.total': { $lt: 400 } } )
4.数组的索引域用于查询条件
db.studentmarks.find( { 'marks.0.class': "II" } )
Recipe 2-12. Restricting the Fields Returned from a Query(从查询中约束域的返回)
准备数据
db.studentdetails.insertMany( [
{name: "John", result: "pass",marks: { english: 25, maths: 23, science: 25 }, grade: [ {class: "A", total: 73 } ] },
{name: "James", result: "pass",marks: { english: 24, maths: 25, science: 25 }, grade: [ {class: "A", total: 74 } ] },
{name: "James", result: "fail",marks: { english: 12, maths: 13, science: 15 }, grade: [ {class: "C", total: 40 } ] }])
1.查询返回指定的域,如下查询只要_id,marks和result
db.studentdetails.find( { name: "John" }, { marks: 1, result: 1} )
2.查询指定返回的域,但不需要_id
db.studentdetails.find( { name: "John" }, { marks: 1, result:1,_id:0 } )
3.查询排队某些域不需要显示,如下,result和_id不需要返回
db.studentdetails.find( { name: "John" }, { result:0,_id:0 } )
4.在嵌套文档中,指定返回某个域,如下只要嵌套的marks的english就行
db.studentdetails.find( { name: "John }, { result:1, grade: 1,"marks.english": 1 })
Recipe 2-13. To Query Null or Missing Fields(查询空或没有的域)
1.插入数据
db.sample.insertMany([{ _id: 1, name: null }, { _id: 2 }]){ "acknowledged" : true, "insertedIds" : [ 1, 2 ] }
2.查询name为null
db.sample.find( { name: null } )
3.使用$type指定null,即$type的10代表null
db.sample.find( { name: { $type: 10 } } )
4.使用$exists来过滤出null
db.sample.find( { name: { $exists: false } } )
Recipe 2-14. Iterate a Cursor(遍历)
1.插入数据
db.numbers.insert({_id:1,number:1});
db.numbers.insert({_id:2,number:2});
db.numbers.insert({_id:3,number:3});
db.numbers.insert({_id:4,number:4});
db.numbers.insert({_id:5,number:5});
db.numbers.insert({_id:6,number:6});
db.numbers.insert({_id:7,number:7});
db.numbers.insert({_id:8,number:8});
db.numbers.insert({_id:9,number:9});
db.numbers.insert({_id:10,number:10});
db.numbers.insert({_id:11,number:11});
db.numbers.insert({_id:12,number:12});
db.numbers.insert({_id:13,number:13});
db.numbers.insert({_id:14,number:14});
db.numbers.insert({_id:15,number:15});
db.numbers.insert({_id:16,number:16});
db.numbers.insert({_id:17,number:17});
db.numbers.insert({_id:18,number:18});
db.numbers.insert({_id:19,number:19});
db.numbers.insert({_id:20,number:20});
db.numbers.insert({_id:21,number:21});
db.numbers.insert({_id:22,number:22});
db.numbers.insert({_id:23,number:23});
db.numbers.insert({_id:24,number:24});
db.numbers.insert({_id:25,number:25});
2.使用发下操作查询
> var myCursor = db.numbers.find()
> myCursor
3.还可以用这个操作查询
var myCursor=db.numbers.find({});
while(myCursor.hasNext()){
print(tojson(myCursor.next()));
}
4.还可以用这个操作查询
> var myCursor = db.numbers.find()
> myCursor.forEach(printjson);
Recipe 2-15. limit() and skip() Methods(limit和skip方法)
1.查询两条数据
db.numbers.find().limit(2)
2.跳过前5条数据
db.numbers.find().skip(5)
II.MongoDB CRUD Operations(CRUD操作)相关推荐
- mongodb的基本crud操作
一.MongoDB的认识 1.什么是MongoDB? 一种数据库,而且是非关系型数据库. 2.MongoDB的优点 1.可以快速开发web型应用,因为灵活,不用像关系型数据库一样需要建表 2.Mong ...
- MongoDB University笔记总结-M001_Chapter 4 Advanced CRUD Operations
Source: MongoDB University https://university.mongodb.com/ Course: M001 MongoDB bascis 12/13/2020 ...
- M201: MongoDB Performance chapter 4 CRUD Operations学习记录
M201: MongoDB Performance chapter 4 CRUD Operations学习记录 运行环境 操作系统:windows 10 家庭中文版 Mongodb :Mongodb ...
- 什么是CRUD? 数据库(含CRUD)的操作
什么是CRUD? CRUD是4个单词的首字母,CRUD分别指增加(Create).读取查询(Retrieve).更新(Update)和删除(Delete)这4个单词的首字母. (1)C:Create( ...
- 基于Javaweb的小项目(类似于qqzone) 2 ——服务端连接数据库并实现CRUD的通用操作
1.数据库连接与关闭 服务端使用Druid连接池进行数据库连接,主要分为两步: 1.配置jdbc.properties文件 driverClassName=com.mysql.jdbc.Driver ...
- php 如果记录集不存在,ThinkPHP教程_PHP框架之ThinkPHP(八)【CRUD与连贯操作】
一.CRUD ThinkPHP提供了灵活和方便的数据库操作方法,其中最基本的就是CRUD四个操作,只有掌握了最基本的CRUD操作,才能更好的运用更多实用的数据库操作方法 CRUD操作通常与连贯操作配合 ...
- 什么是CRUD? CRUD的操作
版权声明:转载请附上文章地址https://blog.csdn.net/qq_42672839 什么是CRUD? CRUD的操作 CRUD是指在做计算处理时的增加(Create).读取查询(Retri ...
- mongodb 超详细的操作集锦
mongodb 超详细的操作集锦 数据库相关操作 集合相关操作 mongo中的操作符 CRUD相关操作 运算符操作 可以直接用命令行进行操作,也可以使用可视化工具,可视化工具推荐使用Robo,Robo ...
- 用python向mongodb插入数据_Python操作MongoDB数据库(一)
Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...
- MongoDB搭建和简单操作(windows环境)
昨天看到fish的MongoDB,但遇到不少问题,于是自己一步一步尝试,将遇到之问题和解决方法记录总结 首先感谢fish!昨天忘了放链接:http://www.cnblogs.com/fish-li/ ...
最新文章
- css 商城 两列_如何使用css伪元素实现超实用的图标库(附源码)
- 介绍一个好用的抓取dump的工具-ProcDump
- [原]Python命令
- 人脸识别损失函数笔记
- 加班其实不是真正的理由(Coders Life)
- Ubuntu 18.04换国内源
- python实现excel筛选功能并输出_python如何实现excel按颜色筛选功能
- 遵义大数据中心项目工程概况_市委书记张新文到曹州云都大数据中心等项目现场调研建设情况...
- 字符串匹配——枚举法
- 让Win让Win XP自动维护系统 自动维护系统
- tomcat7.0设置多域名指向同IP不同项目
- C 关于unsigned int compzero = ~0;与unsigned int compzero = 0xFFFF; 的区别!
- strtok()函数详解!
- 为什么我的电脑只能上qq不能打开网页
- @Cacheable(sync=true) only allows a single cache on
- 图像处理算法工程师必备技能总结
- Doevents函数详解
- java csv文件tozip后损坏,方法来尝试修复损坏的ZIP文件轻松
- 2019年腾讯、京东、 滴滴、讯飞等等互联网公司都在裁员,给你什么启示
- node_modules\fibers\bin\win32-x64-83\fibers.node` is missing 报错解决方案
热门文章
- 个税改革怎么改?媒体称年收入超12万者税负或增加
- 数组玩法(1):下标移位
- H3C nat转换实验
- 使用 RIP、OSPF 发布默认路由
- Active Directory Get User's groups using LDAP
- python 环境准备_virtualenvwrapper
- oracle下载地址
- Error:Could not launch XXX failed to get the task for process 1105
- FLEX 2.01 全套下载!
- Java连接mysql数据库的方式_java连接MySQL数据库的方式