mongodb及mongoTemplate 一些简单记录

//时间区间
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


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值