mongdb多条件查询

阅读: 评论:0

mongdb多条件查询

mongdb多条件查询

$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小时内删除。

标签:多条   mongdb
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23