博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb对集合(表)和数据的CRUD操作
阅读量:6114 次
发布时间:2019-06-21

本文共 3929 字,大约阅读时间需要 13 分钟。

一、集合(对应数据库的表)

1、查看当前库里的所有集合

show collections

2、新建集合

显式创建

db.createCollection("user")

隐式创建

db.user.insert({name:"zhangsan"})

3、删除集合

db.user.dorp()

 

二、文档(对应数据库中的行)

1、新增(insert、save、insertOne/insertMany)

1.1、使用insert方法新增

db.user.insert({name:"zhangsan",age:20,sex:"boy"})

或者先定义变量再保存变量

lisi={name:"lisi",age:30,sex:"girl",phone:"13999999999"}
db.user.insert(lisi)

1.2、使用save方法新增

db.user.save({name:"xiaoli",age:18,sex:"girl"})

或者先定义变量再保存变量

wangwu={name:"wangwu",age:28,sex:"boy",email:"xxx@xx.com"}
db.user.save(wangwu)

1.3、使用insertOne(单条插入,等同于insert)和insertMany(批量插入)

db.user.insertOne( obj, 
) - insert a document, optional parameters are: w, wtimeout, jdb.user.insertMany( [objects],
) - insert multiple documents, optional parameters are: w, wtimeout, j

 2、删

db.user.remove({name:"wangwu"})
db.user.deleteOne({name:"lisi"})
db.user.deleteMany({age:29})

3、改

3.1、save方法 

带id的save为更新(只更新一条)

db.user.save({ "_id" : ObjectId("5afbbbc88a20764e0abc31ac"), "name" : "wangwu", "age" : 18, "sex" : "boy", "email" : "2xxx@xx.com" })

3.2、update方法

db.user.update( query, object[, upsert_bool, multi_bool] )
upsert_bool:true表示如果没找到query相关的记录,则插入一条值为obj的记录 muliti_bool: true表示如果query查到多条,则全部更新下 其中局部修改器有2个:修改器: $inc 和 $set。 $set就是赋值的意思,$inc是自增的意思

带过滤条件的全量更新(只更新匹配的第一条)

db.user.update({name:"wangwu"},{"name" : "wangwu", "age" : 28, "sex" : "boy", "email" : "2xxx@xx.com" })

带过滤条件的更新某些字段(只更新匹配的第一条)

db.user.update({name:"wangwu"},{$set:{email:"3xxx@qq.com"}})

查询数据不存在,新增一条

db.user.update({age:18},{$set:{age:30}},true,false)
db.user.update({age:18},{name:"18girl",age:30},true,false)

根据muliti_bool参数的true和false不同,3.2版本开始引入了单条更新和多条更新的方法

db.user.updateOne( filter, update, 
) - update the first matching document, optional parameters are: upsert, w, wtimeout, jdb.user.updateMany( filter, update,
) - update all matching documents, optional parameters are: upsert, w, wtimeout, j

4、查

db.user.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.

find方法如下很多子方法

find(
,
) modifiers .sort({...}) .limit(
) .skip(
) .batchSize(
) - sets the number of docs to return per getMore .collation({...}) .hint({...}) .readConcern(
) .readPref(
,
) .count(
) - total # of objects matching query. by default ignores skip,limit .size() - total # of objects cursor would return, honors skip,limit .explain(
) - accepted verbosities are { 'queryPlanner', 'executionStats', 'allPlansExecution'} .min({...}) .max({...}) .maxScan(
) .maxTimeMS(
) .comment(
) .snapshot() .tailable(
) .noCursorTimeout() .allowPartialResults() .returnKey() .showRecordId() - adds a $recordId field to each returned objectCursor methods .toArray() - iterates through docs and returns an array of the results .forEach(
) .map(
) .hasNext() .next() .close() .objsLeftInBatch() - returns count of docs left in current batch (when exhausted, a new getMore will be issued) .itcount() - iterates through documents and counts them .getQueryPlan() - get query plans associated with shape. To get more info on query plans, call getQueryPlan().help(). .pretty() - pretty print each document, possibly over multiple lines
db.user.findOne([query], [fields], [options], [readConcern])db.user.findOneAndDelete( filter, 
) - delete first matching document, optional parameters are: projection, sort, maxTimeMSdb.user.findOneAndReplace( filter, replacement,
) - replace first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocumentdb.user.findOneAndUpdate( filter, update,
) - update first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocument

 由于查询比较复杂,特在后面的blog中详细说明

转载地址:http://plcka.baihongyu.com/

你可能感兴趣的文章
转:Vue keep-alive实践总结
查看>>
android studio修改新项目package名称
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Hadoop2.5.0 搭建实录
查看>>
实验吧 recursive write up
查看>>
High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
查看>>
go test命令參数问题
查看>>
linux 搜索文本
查看>>
超实用Mac软件分享(二)
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>
java注解【转】
查看>>
Oracle表分区
查看>>
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
配置设置[Django]引入模版之后报错Requested setting TEMPLATE_DEBUG, but settings are not configured....
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>