工具
mongo 推荐使用桌面管理工具:Robo 3T / Studio 3T
查询
mongo 我一般用来作为log 存储的数据库,存的是json格式的数据,所以要掌握查询技巧。(注意查询的数据类类型严格区分,状态2 不能使用字符串类型 “2”)
普通查询示例:
db.getCollection('admin_log').find({
"name":"admin","status":2,"content.option":"delete"})
模糊查询:($or)
db.getCollection('admin_log').find({
"status":1,"msg.action":"TrackingNewMsg",$or:[{
"mq_id":{
"$regex":"mq200818"}}]})
查询数量:
db.getCollection('admin_log').find({
"name":"admin","status":2,"content.option":"delete"}).count()
<, <=, >, >= ($lt, $lte, $gt, $gte )
db.getCollection('admin_log').find({
'status' : {
'$gte' : 20, '$lte' : 30}});
使用in, not in ($in,$nin)
db.getCollection('admin_log').find({
'status' : {
'$in' : [10, 11, 12]}});
查询null
db.getCollection('admin_log').find({
'status' : null);
查询使用 like (mongoDB 支持正则表达式)
db.getCollection('admin_log').find({
"name":/hurry/});
时间查询:(ISODate() 或 Date() 查询)
# 大于某个时间
db.getCollection('admin_log').find({
"update_time":{
"$gt":ISODate("2017-04-20T01:16:33.303Z")}})
#小于某个时间
db.getCollection('admin_log').find({
"update_time":{
"$lt":ISODate("2017-04-20T01:16:33.303Z")}})
#某个时间段
db.getCollection('admin_log').find({
"$and":[{
"update_time":{
"$gt":ISODate("2017-04-20T01:16:33.303Z")}},{
"updated_time":{
"$lt":ISODate("2018-12-05T01:16:33.303Z")}}]})
#某个时间段
db.getCollection('admin_log').find({
"update_time":{
"$gte":ISODate("2017-04-20T01:16:33.303Z"),"$lte":ISODate("2018-12-05T01:16:33.303Z")}})
删除
(删除条件写在remove() 里面)
db.getCollection('admin_log').remove({
"status":1,"msg.action":"TrackingNewMsg",$or:[{
"mq_id":{
"$regex":"mq200818"}}]})
新增
新增可以用:insert()或save()
示例:
db.getCollection('admin_log').insert({
“age”:18,"name":"小明"})
db.getCollection('admin_log').save({
“age”:18,"name":"小李"})
3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany(),分别用于向集合插入一条和多条。
db.getCollection('admin_log').insertOne({
“age”:18,"name":"小明"})
db.getCollection('admin_log').insertMany([{
"age":18,"name":"小明"},{
"age":18,"name":"小李"}])
修改
更新使用update()方法。如果需要批量更新的话需要加上 multi,否则只更新一条数据
db.getCollection('admin_log').update({
"age":18},{
$set:{
"age":20}},{
multi:true})