一、官方文档
官网:https://www.mongodb.com/ 官方文档:https://docs.mongodb.com/manual/
二、基础命令
可查看官方文档中MongoDB CRUD Operations选项卡
插入
命令 说明 db.collection.insert() 可以插入多个也可以插入一个 db.collection.insertOne() 只能插入一个 db.collection.insertMany() 插入多个
注:insertOne、insertMany在3.2版本才新加的
db. user . insert ( {name:'哈哈' , age:10 }) ;
db. user . insert ( {name:'haha' , age:10 }) ;
db. user . insert ( {name:'哈哈' , age:10 , sex:"男" }) ;
db. user . insert ( [
{name:'哈哈1' , age:11 , sex:"男" },
{name:'哈哈2' , age:12 , sex:"男" },
{name:'哈哈3' , age:13 , sex:"男" }
] ) ;
ObjectId( ) ;
db. user . insert ( {_id:11 , name:'指定ID' , age:10 , sex:"男" }) ;
db. user . insertOne( {name:'哈哈单个' , age:10 , sex:"男" }) ;
db. user . insertMany( [
{name:'哈哈多个1' , age:11 , sex:"男" },
{name:'哈哈多个2' , age:12 , sex:"男" },
{name:'哈哈多个3' , age:13 , sex:"男" }
] ) ;
查询
命令 说明 db.collection.find() 为查询所有满足条件的,返回集合 db.collection.findOne() 为满足条件中的一条记录,返回单条记录
db. user . find( ) ;
db. user . find( {_id:11 }) ;
db. user . find( {_id:ObjectId( "5f1bee7a49cfef72580116a2" ) }) ;
db. user . find( {sex:"男" }) ;
db. user . find( {sex:"男" , age:10 }) ;
db. user . find( {sex:"男" , age:10 }) [ 0 ] ;
db. user . find( {sex:"男" , age:10 }) [ 0 ] . name;
db. user . findOne( {sex:"男" , age:10 }) ;
db. user . findOne( {sex:"男" , age:10 }) . name;
db. user . find( ) . count ( ) ;
db. user . find( {sex:"男" , age:10 }) . count ( ) ;
db. user . find( ) . length( ) ;
db. user . find( {sex:"男" , age:10 }) . length( ) ;
db. user . find( {sex:"男" , age:12 }, {name:1 , _id:0 }) ;
修改
命令 说明 db.collection.update() 默认为修改一条,新增multi:true属性,可以修改多个 db.collection.updateOne() 修改一条 db.collection.updateMany() 修改多条 db.collection.replaceOne() 替换
db. user . update ( {name:"haha" }, {age:12 }) ;
db. user . update ( {_id:ObjectId( "5f1bee7a49cfef72580116a2" ) },
{
$set :{name:"haha" , sex:"女" , test:"测试" }
}) ;
db. user . update ( {_id:ObjectId( "5f1bee7a49cfef72580116a2" ) },
{
$set :{name:"haha1" , sex:"女" },
$unset:{test: 0 }
}) ;
db. user . update ( {name:"哈哈" },
{
$set :{sex:"女" }
}) ;
db. user . updateMany( {name:"哈哈" },
{
$set :{sex:"女1" }
}) ;
db. user . update ( {name:"哈哈" },
{ $set :{sex:"女" } },
{ multi:true }
) ;
db. user . updateOne( {name:"哈哈" },
{
$set :{sex:"女1" }
}) ;
db. user . replaceOne( {_id:ObjectId( "5f1bee7a49cfef72580116a2" ) },
{name:"haha" }) ;
删除
命令 说明 db.collection.remove() 既可以删除多条,也可以删除单条,若只想删除一条,需要多传一个参数 db.collection.deleteOne() 删除单条 db.collection.deleteMany() 删除多条
db. user . remove( {_id:11 }) ;
db. user . remove( {age:10 }) ;
db. user . remove( {age:11 }, true ) ;
db. user . remove( {}) ;
db. user . drop ( )
其他(更详细的可参考官方文档)
db. user . insert ( {
name:"文档内包含文档01" ,
age:15 ,
hobby:{
movie:[ "电影一" , "电影二" , "电影三" ] ,
city:[ "北京" , "上海" , "广州" ]
}
}) ;
db. user . insert ( {
name:"文档内包含文档02" ,
age:15 ,
hobby:{
movie:[ "电影一" , "电影四" , "电影五" ] ,
city:[ "北京" , "深圳" , "广州" ]
}
}) ;
db. user . find( {"hobby.movie" :"电影一" }) ;
db. user . find( {"hobby.movie" :"电影二" }) ;
db. user . update ( {name:"文档内包含文档01" }, {
$push:{"hobby.movie" :"电影六" }
}) ;
db. user . update ( {name:"文档内包含文档01" }, {
$addToSet:{"hobby.movie" :"电影六" }
}) ;
for ( var i = 1 ; i <= 100 ; i+ + ) {
db. nums. insert ( {num:i}) ;
}
var arr = [ ] ;
for ( var i = 1 ; i <= 100 ; i+ + ) {
arr. push( {num:i}) ;
};
db. nums. insert ( arr) ;
db. nums. find( {num:{$gt:98 }}) ;
db. nums. find( {num:{$gte:98 }}) ;
db. nums. find( {num:{$lt:2 }}) ;
db. nums. find( {num:{$lte:2 }}) ;
db. nums. find( {num:{$gt:50 , $lt:55 }}) ;
db. nums. find( ) . limit ( 10 ) ;
db. nums. find( ) . skip( 10 ) . limit ( 10 ) ;
db. nums. find( {
$or :[ {num:{$gte:98 }}, {num:{$lt:2 }}]
}) ;
db. nums. updateMany( {num:{$gt:98 }}, {
$inc:{num:3 }
}) ;
db. nums. find( ) . sort( {num:1 }) ;
db. nums. find( ) . sort( {num:- 1 }) ;
db. nums. find( ) . sort( {num:- 1 , aaa:1 }) ;
官方文档篇(详细操作参考官网文档,以下均摘自官方文档)
Update Operators(修改操作)
可查看官方文档中Reference > Operators > pdate Operators选项卡 Fields
名称 说明 $currentDate 将字段的值设置为当前日期,即日期或时间戳。 $inc 将字段的值增加指定的数量 $min 仅当指定值小于现有字段值时才更新该字段。 $max 仅当指定值大于现有字段值时才更新该字段 $mul 将字段的值乘以指定的数量 $rename 重命名字段 $set 设置文档中字段的值 $setOnInsert 如果更新导致插入文档,则设置字段的值。对修改现有文档的更新操作没有影响 $unset 从文档中删除指定的字段
Array:数组
名称 说明 $ 充当占位符,以更新与查询条件匹配的第一个元素 $[] 充当占位符,以更新匹配查询条件的文档的数组中的所有元素 $[] 充当占位符,以更新arrayFilters与查询条件匹配的文档中所有与条件匹配的元素 $addToSet 仅当元素不存在于集合中时才将它们添加到数组中 $pop 删除数组的第一项或最后一项 $pull 删除与指定查询匹配的所有数组元素 $push 将项目添加到数组 $pullAll 从数组中删除所有匹配的值
Modifiers
名称 说明 $each 修改
p
u
s
h
和
push和
p u s h 和 addToSet运算符以附加多个项以进行数组更新 $position 修改$push运算符以指定要添加元素的数组中的位置 $slice 修改$push运算符以限制更新数组的大小 $sort 修改$push运算符以对存储在数组中的文档重新排序
Bitwise
名称 说明 $bit 执行按位AND,OR和XOR整数值的更新
Query and Projection Operators(查询和投影操作)
可查看官方文档中Reference > Operators > Query and Projection Operators选项卡 Comparison 比较
名称 说明 $eq 匹配等于指定值的值 $gt 匹配大于指定值的值 $gte 匹配大于或等于指定值的值 $in 匹配数组中指定的任何值 $lt 匹配小于指定值的值 $lte 匹配小于或等于指定值的值 $ne 匹配所有不等于指定值的值 $nin 不匹配数组中指定的任何值
Logical 逻辑
名称 说明 $and 用逻辑联接查询子句AND将返回两个子句都符合条件的所有文档 $not 反转查询表达式的效果,并返回与查询表达式不匹配的文档 $nor 用逻辑联接查询子句NOR将返回两个子句均不匹配的所有文档 $or 用逻辑联接查询子句OR将返回符合任一子句条件的所有文档
Element 元素
名称 说明 $exists 匹配具有指定字段的文档 $type 如果字段是指定类型,则选择文档
Evaluation 评估
名称 说明 $expr 允许在查询语言中使用聚合表达式 $jsonSchema 根据给定的JSON Schema验证文档 $mod 对字段的值执行模运算并选择具有指定结果的文档 $regex 选择值与指定的正则表达式匹配的文档 $text 执行文本搜索 $where 匹配满足JavaScript表达式的文档
Geospatial 地理空间
名称 说明 $geoIntersects 选择与GeoJSON几何形状相交的几何形状。该2dsphere索引支持 $geoIntersects $geoWithin 选择边界GeoJSON几何内的几何。该2dsphere和2D指标支持 $geoWithin $near 返回点附近的地理空间对象。需要地理空间索引。该2dsphere和2D指标支持 $near $nearSphere 返回球体上某个点附近的地理空间对象。需要地理空间索引。该2dsphere和2D指标支持 $nearSphere
Array 数组
名称 说明 $all 匹配包含查询中指定的所有元素的数组 $elemMatch 如果array字段中的元素符合所有指定$elemMatch条件,则选择文档 $size 如果数组字段为指定大小,则选择文档 按位
Bitwise 按位
名称 说明 $bitsAllClear 匹配数字或二进制值,其中一组位的所有值均为0 $bitsAllSet 匹配数字或二进制值,其中一组位的所有值均为1 $bitsAnyClear 匹配数值或二进制值,在这些数值或二进制值中,一组位位置中的任何位的值为0 $bitsAnySet 匹配数值或二进制值,在这些数值或二进制值中,一组位位置中的任何位的值为1
Comments 注释
Projection Operators 投影运算
名称 说明 $ 在与查询条件匹配的数组中投影第一个元素 $elemMatch 投影与指定$elemMatch条件匹配的数组中的第一个元素 $meta 投影$text操作期间分配的文档分数 $slice 限制从数组投影的元素数量。支持跳过和限制切片