//时间区间
Criteria.where("time").gte(weekStartDate).lte(weekEndDate);
//正则匹配以val开始不包含本身的字符
Criteria.where("val").regex("^" + val + ".+");
//查询in列表,结果不一定会按照id顺序排列
Criteria.where("id").in("08197f93a6b742faa694e94b23c4e105", "3332061db4a04555b23d91a1b3011c6f", "b1ff303ebc844e968c60f8802bea1356")
Query query = new Query(criteria);
List<User> list = mongoTemplate.find(query, User.class);
//字段改名
db.getCollection('article').update({}, {$rename: {userAge: "age"}}, {multi: true})
//更新集合全部字段值
db.area.update({}, {$set: {alias: null}}, {multi: true})
//查找字段sex为null的数据
db.user.find({sex: null})
//初始化字段sex为null时的值
db.user.update({sex: null}, {$set: {sex: NumberInt(1)}}, {multi: true})
//更新大于指定条件的数据的createDate为少12小时 (数据量大比较耗时)
db.user.find({ createDate: {$gte: ISODate("2019-03-21T06:00:00.00Z")} }).forEach(
function(item){
db.user.update({"_id":item._id},{"$set": {"createDate": new Date(item.createDate.getTime() - 12 * 60 * 60 * 1000 )}},false,true)
}
)
//删除指定条件后的数据
db.user.remove({role:"客服", ctime: {$gte: ISODate("2018-04-21T08:30:53.454Z")}}, {justOne: false})
//通过forEach更新数据
db.user.find({code: {$ne: null}}).forEach(
function(item){
//通过update更新
db.user.update({"_id":item._id},{"$set": {"username": item.tel, state: NumberInt
(1)}},false,true)
//也可以通过save方法更新
/*
item.username = item.tel
item.state = NumberInt(1)
db.user.save(item)
*/
}
)
//查找指定时间后的数据
db.user.find({role:"客服", ctime: {$gte: ISODate("2018-04-21T08:30:53.454Z")}})
//查找指定时间范围的数据 ( 2018-04-21 <= ctime < 2018-04-22 )
db.user.find({role:"客服", ctime: {$gte: ISODate("2018-04-20T16:00:000Z"), $lt: ISODate("2018-04-21T16:00:00.000Z") }})
//排序 (1升序 -1降序)
db.user.find({}).sort({ctime:1})
//查找用户中银行卡列表与当前银行卡名称和状态所匹配的记录
db.user.find({"bankCardList": $elemMatch: {"name": "杭州银行", status: 2} })
db.user.find({"bankCardList": $elemMatch: {"name": { $regex: "^银行.*" }, status: 2} })
# 如果只查status
db.user.find({"bankCardList.status": 2} )
//通过聚合抽出指定个数的数据
db.answers.aggregate([
{ $sample: { size: 20 }}
])
//查询非空数组(最少有一个元素)
db.user.find({"photos":{$elemMatch:{$ne:null}}})
db.user.find({"photos.0":{$exists: true}})
db.user.find({"photos":{$gt: []}})
db.user.find({"photos":{$not: {$size: 0}}})
db.user.find({$where: function() {
return this.photos && this.photos.length > 0
}});
时间 (2018-04-21 08:00:00.000)
ISODate("2018-04-21T00:00:00.000Z")
new Date("2018-04-21T00:00:00.000Z")
//验证值相等
ISODate("2018-04-21T00:00:00.000Z").getTime() == new Date("2018-04-21T00:00:00.000Z").getTime()
//如何表示2018-04-21 00:00:00.000
ISODate("2018-04-20T16:00:000Z")
使用mongoexport导出
//无帐号密码时
/Users/joker/mongo/bin/mongoexport -h 127.0.0.1 -d school -c user -o /Users/joker/db_export/user.json
//有帐号时,将会提示输入密码
/Users/joker/mongo/bin/mongoexport -h 127.0.0.1 -u root -d school -c user -o /Users/joker/db_export/user.json
使用mongoimport 导入
//无帐号密码时
/Users/joker/mongo/bin/mongoimport -h 127.0.0.1 -d school -c user --file /Users/joker/db_export/user.json
//有帐号时,将会提示输入密码
/Users/joker/mongo/bin/mongoimport -h 127.0.0.1 -u root -d school -c user --file /Users/joker/mongo