mongodb使用总结

xiaoxiao2021-02-28  112

一、简单的条件查询 db.getCollection('cdt_shop_act_info').find({"rls_status":"1","shop_status":"1","status":"1"}) 多个条件用","隔开。相当于mysql的where and查询 二、in 和 nin db.getCollection('cdt_act_info').find({"banks":{$in:["华夏","招商"]}}) db.getCollection('cdt_act_info').find({"banks":{$nin:["华夏","招商"]}}) 三、mogodb查询数组元素 db.blogs.findOne(); { "_id" : ObjectId("502262ab09248743250688ea"), "content" : ".....", "comment" : [ { "author" : "joe", "score" : 3, "comment" : "just so so!" }, { "author" : "jimmy", "score" : 5, "comment" : "cool! good!" } ] } > db.blogs.find({"comment":{"$elemMatch":{"author":"joe", "score":{"$gte":5}}}}); > db.blogs.find({"comment":{"$elemMatch":{"author":"joe", "score":{"$gte":3}}}}); { "_id" : ObjectId("502262ab09248743250688ea"), "content" : ".....", "comment" : [ { "author" : "joe", "score" : 3, "comment" : "just so so!" }, { "author" : "jimmy", "score" : 5, "comment" : "cool! good!" } ] } 这样做,结果是正确的!利用条件操作符“$elemMatch”可以组合一组条件,并且还能达到的“点表示法”的模糊查询的效果! 四、复杂数组对象的in查询 db.getCollection('cdt_act_info').find({"banks":{"$elemMatch":{"bankName":{$in:["华夏银行","招商银 行"]}}}}) 五、大于,小于,大于或等于,小于或等于、不等于 db.getCollection('cdt_shop_act_info').find({"is_hot":{$ne:0}}) $gt:大于 $lt:小于 $gte:大于或等于 $lte:小于或等于 六、MongoDB中的null和不存在   查询集合cdt_shop_act_info中y的值为null或者不存在 db.cdt_shop_act_info.find( { “y” : null } ) 查询集合cdt_shop_act_info中y的值为null,(仅返回y的值为null的数据,不会返回不存在的) db.cdt_shop_act_info.find( { “y” : { $type : 10 } } ) 还有一种写法如下 db.cdt_shop_act_info.find({“y”:{“$in”:[null], “$exists”:true}}) 查询集合cdt_shop_act_info中y的值不存在(不会返回y的值为null的数据) db.cdt_shop_act_info.find( { “y” : { $exists : false } } ) 七、基于坐标的聚合管道查询 db.cdt_shop_act_info.aggregate([ { $geoNear: { near: { type: "Point", coordinates: [ 121.279015 , 31.385134 ] }, distanceField: "calculated", minDistance: 1182.51889505108, maxDistance: 20000, query: { "status": "1","shop_status":"1","rls_status":"1" }, num:5, spherical: true } } ]) 注:{经纬度有范围限制,应当注意,如果超出范围会报错;在建立索引时经纬度超出范围也会报错导致索引无法建立} 八、删除表中重复数据 sql语句: var res = db.cdt_shop_act_info.aggregate([ { $group: { _id: {shopid: '$shop_id',actid: '$act_id'},count: {$sum: 1}} }, { $match: {count: {$gt: 1}} } ]) for(var i in res._batch){ var shop_id = res._batch[i]._id.shopid; var act_id = res._batch[i]._id.actid; var count = res._batch[i].count; for(var j=0;j<count-1;j++){ db.cdt_shop_act_info.remove({"shop_id":shop_id,"act_id":act_id},true) } } 九、mongodb增加字段 db.cdt_shop_act_info.update({}, {$set: {act_click_count:0,act_sort:10}}, {multi: 1})
转载请注明原文地址: https://www.6miu.com/read-26553.html

最新回复(0)