MongoDB
find() 和 pretty() 查询
db. '表名' . find( { query1, query2} , { projection1, projection2} )
query // 查询条件
projection // 返回键值对
db. '表名' . pretty( )
// 通配符 / ^ / / $/ / / = myc中的%
db. '表名' . find( { title: / ^ test/ } ) // 以test开头
db. '表名' . find( { title: / test$/ } ) // 以test结尾
db. '表名' . find( { title: / test/ } ) // 包含test
update() 更新
db. '表名' . update(
{ '条件列名' : '条件值' } ,
{ $set : { '改参数的列名' : '更改后的参数' } } ,
{
upsert: true/ false, // true: 容许插入新的数据,false:只更新已存在的数据
multi: true/ false, // true: 容许更新多条记录,false:只更新第一条
writeConcern: 在指定异常时抛出错误
}
)
WriteConcern类型
抛出异常状况
WriteConcern.NONE
没有异常抛出
WriteConcern.NORMAL
仅抛出网络错误异常,没有服务器错误异常
WriteConcern.SAFE
抛出网络错误异常、服务器错误异常;并等待服务器完成写操做。
WriteConcern.MAJORITY
抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操做。
WriteConcern.FSYNC_SAFE
抛出网络错误异常、服务器错误异常;写操做等待服务器将数据刷新到磁盘。
WriteConcern.JOURNAL_SAFE
抛出网络错误异常、服务器错误异常;写操做等待服务器提交到磁盘的日志文件。
WriteConcern.REPLICAS_SAFE
抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操做。
条件操做符
操做符
格式
示例
RDBMS语句
等于=
{key:value}
db.col.find({“key”:“value”}).pretty()
where key = ‘test’
小于<
{key:{ $lt :num}}
db.col.find({“key”:{$lt:num}}).pretty()
where key < num
小于等于<=
{key:{ $lte :num}}
db.col.find({“key”:{$lte:num}}).pretty()
where key <= num
大于>
{key:{ $gt :num}}
db.col.find({“key”:{$gt:num}}).pretty()
where key > num
大于等于>=
{key:{ $gte :num}}
db.col.find({“key”:{$gte:num}}).pretty()
where key >= num
不等于!=
{key:{ $ne :num}}
db.col.find({“key”:{$ne:num}}).pretty()
where key != num
$gt // greater than >
$gte // gt equal >=
$lt // less than <
$lte // lt equal <=
$ne // not equal !=
$eq // equal =
db. col. find( { key : { $lt : 50 , $gt : 0 } } )
AND 和 OR 条件
db. col. find( { key1: value1, key2: value2} ) . pretty( ) - - - and
db. col. find(
{
$or : [
{ key1: value1} , { key2: value2}
]
}
) . pretty( ) - - - or
db. col. find( { "key" : { $gt: 50 } , $or : [ { "key" : "value" } , { "title" : "value" } ] } ) . pretty( ) - - - and + or
$type 操做符
db. col. find( { "key" : { $type : 'string' } } )
类型
数字
Double
1
String
2
Object
3
Array
4
Binary data
5
Undefined
6
Object id
7
Boolean
8
Date
9
Null
10
Regular Expression
11
JavaScript
13
Symbol
14
JavaScript (with scope)
15
32-bit integer
16
Timestamp
17
64-bit integer
18
Min key
255
Max key
127
createIndex() 索引
db. col. createIndex( key1: 1 , key2: - 1 )
// 按照key1的正序和key2的倒序建立复合索引
db. col. createIndex( { key1: 1 , key2: - 1 } , { background: true} )
// 建立索引时加 background: true,让建立工做在后台执行
aggregate() 聚合
db. col. aggregate( [ { $group: { _id: "$name" , num: { $sum : 1 } } } ] )
=
select name, count( * ) from col group by name
$geoNear // 输出接近某一地理位置的有序文档。
$unwind 拆分
db. col. aggregate( [ { $unwind: "keys" } ] )
// 使用$unwind能够将keys中的每一个数据都被分解成一个文档
$Limit 和 $Skip
db. col. find( ) . limit( num1) . skip( num2)
// 显示num1条中除去num2条以后的数据
$limit 限制显示
db. col. find( ) . limit( num)
// 显示num条数据
$skip 剔除显示
db. col. find( ) . skip( num)
// 跳过num条数据,显示num条以后的数据
$sort 排序
db. col. find( ) . sort( { "key" : - 1 } )
// 按照key的倒序排列
$project
db. col. aggregate(
{ $project:
{
_id: 0 ,
userid: 1 ,
username: 1
}
}
)
// id 主键默认显示( 0 为不显示) ,显示userid和username
等于 select userid,username from col
$match
db. col. aggregate( [
{ $match: { score: { $gt: 10 , $lte: 20 } } } ,
{ $group: { _id: null, count: { $sum : 1 } } }
] )
// 获取分数大于10 小于或等于20 的数据而后管道至$group处理
$group
db. col. aggregate( [
{ $group: {
_id: "$username" ,
times: { $sum : 1 }
} }
] )
// 对username进行排列,统计出每一个username出现的次数
等于 select username, count( * ) from col group by username
$lookup
$lookup: { // aa表左链接
from : "bb" , // 关联到bb表
localField: "uid" , // aa 表关联的字段
foreignField: "uid" , // bb 表关联的字段
as : "classId"
}
$cond + if,else 实例(统计多条件下每一个条件的人数)
db. lv_exp. aggregate( [
{ $project: {
playerid: 1 , // 1 为统计playerid个数
exp: {
$cond: {
if : { $and : [ { $lt: [ '$exp' , 1000 ] } , { $gte: [ '$exp' , 0 ] } ] } ,
then: "Lv_1 人数为" ,
else : {
$cond: {
if : { $and : [ { $lt: [ '$exp' , 2000 ] } , { $gte: [ '$exp' , 1000 ] } ] } ,
then: "Lv_2 人数为" ,
else : {
$cond: {
if : { '$exp' : { $gte: 2000 } } ,
then: "Lv_3 人数为" ,
else : "经验为负数的异常人数为" // 0 如下的数据
}
}
}
}
}
}
} } ,
{ $match: { playerId: 10000 } } , // 统计playerid= 10000 的人员( 统计人员的类型) != userid
{ $group: { _id: "$exp" , count: { $sum : 1 } } } , // 这里是按照exp的字段,把全部数据的个数相加
{ $sort: { _id: 1 } } // 正序排列
] ) // 统计每一个等级下的人数
后期更新。。。web