$match 用于对数据进行筛选
{"$match":{"字段":"条件"}},可以使用任何常用查询操作符$gt,$lt,$in,$or等
db.查询数据库名称.aggregate([{"$match":{// 过滤数据的条件}}])
{$match: {is_delete:false,$or:[{字段:'条件'}]}}
$addFields 添加字段或者覆盖字段
{ $addFields: { "_id": { "$toString": "$_id" }}} // 用字符串_id覆盖ObjectId的_id
$lookup 数据连表查询
{$lookup: {from: '关联表的表名',localField: '查询表中与关联表相关的字段',foreignField: '关联表中与查询表相关的字段',as: '关联表要加入到查询表中的字段名'}
}
$project 选择要显示的字段,并且过滤关联表中的数据
{"$project":{"要保留的字段名":1,"要去掉的字段名":0,"新增的字段名":"表达式"}}
_id字段默认显示,要去掉就用0;其他字段不显示直接不写就好,用0弃掉会报错。
数字表达式
{"$add":[expr1,expr2,...,exprN]} #相加
{"$subtract":[expr1,expr2]} #第一个减第二个
{"$multiply":[expr1,expr2,...,exprN]} #相乘
{"$divide":[expr1,expr2]} #第一个表达式除以第二个表达式的商作为结果
{"$mod":[expr1,expr2]} #第一个表达式除以第二个表达式得到的余数作为结果
表达式之日期表达式:
$year,$month,$week,$dayOfMonth,$dayOfWeek,$dayOfYear,$hour,$minute,$second
db.emp.aggregate([{"$project":{"要显示的字段":1,"date":{"$year":"$日期字段"}}}
])
字符串表达式
{"$substr":[字符串/$值为字符串的字段名,起始位置,截取几个字节]}
{"$concat":[expr1,expr2,...,exprN]} #指定的表达式或字符串连接在一起返回,只支持字符串拼接
{"$toLower":expr}
{"$toUpper":expr}
$group 用于分组
$sort ,limit,skip 排序,分页查询
$sort: 1升序,-1降序
$limit:一页要显示的数据,pageSize
$skip:要从第几个开始,(pagenum - 1) *pageSize
$sample 随机查询
db.skill.aggregate([ {"$sample": {size: 5} }]) // 随机查询5条
$unwind 将数组元素拆分为独立字段
{ "_id" : ObjectId(""),"array" : [ "one", "two", "three" ] }db.test.aggregate({$project:{array:1}},{$unwind:"$array"})
{ "result" : [ { "_id" : ObjectId(""), "tags" : "one" }, { "_id" : ObjectId(""), "tags" : "two" }, { "_id" : ObjectId(""),"tags" : "three" } ], "ok" : 1 }
$filter 过滤要返回的数组子集
{$lookup: {from: 'table', localField: '_id',foreignField: 't_id', as: 'List'} },
{$project: {name: 1, List: {$filter: {input: "$List", as: "item",cond:{$eq: ["$$item.name",""]} } }}}
// cond:{} 里面要过滤数组类型时,不能一层一层直接打点
// cond:{{$eq: [ "$$item.array.name", '']}} 过滤不了
混合使用:
db.数据库名.aggregate([{ $addFields: { "_id": { "$toString": "$_id" }}},{$lookup: {from: '关联表的表名',localField: '查询表中与关联表相关的字段',foreignField: '关联表中与查询表相关的字段',as: '关联表要加入到查询表中的字段名'}},{$match: {_id:''",is_delete:false,$or:[{查询表的字段:'要过滤的条件'},{'关联表要加入到查询表中的字段名.关联表字段':''}]}},{$project: {要显示的字段:1,关联表要加入到查询表中的字段名:{$filter: {input: "$关联表要加入到查询表中的字段名",as: "item",cond: {$or: [{$eq: ["$$item.name:"]}]}}}}}
])
mongodb批量修改字段中的某个字符
db.getCollection('flow_node_copy_update').find({t':{'$ne':null}, t':{$regex:/~/}}).forEach( function(item) {var tmp = ply_listif (tmp.length != 0) {tmp.forEach(function(replyList) {var reply = t_listif (reply.length != 0) {reply.forEach(function(contentList) {var content = tif (content != null) {t = place(/~/g,"!");t)}})}})}t.reply_list[0].content_list[0].Collection('flow_node_copy_update').save(item);}
);
本文发布于:2024-01-31 12:22:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667497828487.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |