常用shell命令
1.批量更新指定字段
db.getCollection('CustomerBelongMongo').find({}).forEach(
function(item){
db.getCollection('CustomerBelongMongo').update({"_id":item._id},{$set:{"updateTime": ISODate("2019-11-04T14:44:52.448Z")}})
}
)
2.聚合查询
db.LogMongo.aggregate([
{
"$match" : {
"$and" : [ { "operationId" : 191} , { "logType" : 3} ,
{ "updateTime" : { "$lte" : ISODate("2019-11-04T15:59:59.999Z")}} ,
{ "updateTime" : { "$gte" : ISODate("2019-10-31T16:00:00.000Z")}}]
}
} ,
{ "$project" : { "date" : { "$dateToString" : { "format" : "%Y-%m-%d" , "date" : "$updateTime"}}}} ,
{ "$group" : { "_id" : "$date" , "count" : { "$sum" : 1} , "date" : { "$first" : "$date"}}} ,
{ "$sort" : { "date" : 1}}])
3.$in
必须使用[]。表示查找包含指定属性且属性值等于指定数组其中之一元素的文档。(满足数组其中一个元素就能匹配)
db.user.find({age: { $in:[13,73]}})
查找结果:
{ "_id" : ObjectId("5ca7a4b0219efd687462f965"),"age" : 73 }
{ "_id" : ObjectId("5ca7a4c4219efd687462f968"), "age" : 13 }
4.$or
查找满足多个条件中某一个的文档。相当于mysql中or的作用。(满足某一个条件就能匹配)
db.user.find({$or:[{name:"mike"},{name:"jack"}]} )
查找结果:
{ "_id" : ObjectId("5ca7a4b0219efd687462f965"), "name" : "jack"}
{ "_id" : ObjectId("5ca7a4b7219efd687462f966"), "name" : "mike"}
5.$all
必须使用[]。表示查找包含指定属性且属性值等于指定数组其中全部元素的文档。(满足数组所有元素就能匹配)
db.user.find({hobby:{$all:["足球","羽毛球"] } })
查找结果:
{ "_id" : ObjectId("5ca7a4c4219efd687462f968"),"hobby" : [ "羽毛球", "篮球", "足球" ] }
6.按多个条件查询数组元素
db.getCollection('sys_user').find({"platformList.platformCode":"xxx","userName":"xxx"})
db.getCollection('sys_user').find({"platformList":{$elemMatch:{"platformCode":"xxx"}},"userCode":"xxx"})
7.$exists
db.collectionname.find( { fieldname: { $exists: true } } ):查询包含指定字段的文档(不论字段值是否为null)
db.collectionname.find( { fieldname: { $exists: false } } ):查询不包含指定字段的文档
示例:
{ a: 5, b: 5, c: null }
{ a: 3, b: null, c: 8 }
{ a: null, b: 3, c: 9 }
{ a: 1, b: 2, c: 3 }
{ a: 2, c: 5 }
{ a: 3, b: 2 }
{ a: 4 }
{ b: 2, c: 4 }
{ b: 2 }
{ c: 6 }
db.collectionname.find( { a: { $exists: true } } ):查询所有包含a字段的文档数据
db.collectionname.find( { a: { $exists: false } } ):查询所有不包含a字段的文档数据
$exists: boolean:boolean为true表示包含,反之则表示不包含。
8.$pull
用于数组元素的删除,可以删除指定元素或符合条件的所有元素。
9.$push
用于数组元素的添加,可以添加指定元素或多个元素。(已存在的值仍可新增,可能存在重复数据)
10.$addToSet
用于数组元素的添加,可以添加指定元素或多个元素或整个数组。(已存在的值不再新增,不存在重复数据)
11.模糊查询并移除
db.xxx.remove({"description":/^.*支付方式.*$/})