mongodb记录

mongo数据库复制

 mongodump --archive --gzip --host host1 --db db1 -v | mongorestore --drop --archive --gzip --host host2 --port 27017 -v
 mongodump --archive --gzip --host host1 --db db1 -v | mongorestore --drop --archive --gzip --host host2 --nsFrom db1.* --nsTo db2.* -v

第一条命令从host1将db1复制到host2的db1 第二条命令从host1将db1复制到host2的db2

mongo日志清理

ps -ef | grep mongod找到mongodb的进程

kill -SGIUSR1 mongodb进程ID

这时候mongo会将当前日志保存为以日期命名的文件,然后创建新的mongodb.log文件

参考:MongoDB 日志太大的解决方法

mongodb非正常关闭启动方法

非正常关闭,lock文件没有干掉,所以再次启动时,检查到会有lock文件的时候,就报这个错误。

进入数据库目录(上次启动时指定的dbpath=/data/db/)删掉lock文件:rm /data/db/mongo.lock

然后执行mongod --repair (修复,mongod依照自己的本地环境),再次启动,ok

查询忽略大小写

ignore-case-in-query

java:

DBObject ref = new BasicDBObject();

ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));

DBCursor cur = coll.find(ref); 

mongo:

db.getCollection('mycollection').find({myfield:/^myvalues$/i})

按照数组字段中某个索引位置的值进行排序

db.collection.find({}).sort({"array.index":sortnum})

如:按照用户表中角色字段的第二个值倒叙排列

db.user.find({role:{$size:3}}).sort({"role.1":-1})

热门标签匹配

热门标签匹配

以下为原文引用:

results = Article.collection.aggregate(
  {
    "$match" => { 
      tags: { 
        "$in" => current_article.tags 
      },
      _id: { 
        "$ne" => current_article.id 
      }
    },
  },  
  { 
    "$unwind" => "$tags"
  },
  { 
    "$match" => { 
      tags: { 
        "$in" => current_article.tags 
      } 
    }
  },
  { 
    "$group" => {
      _id: "$_id", 
      matches: { "$sum" =>1 }
    }
  },
  { 
    "$sort" => { matches: -1 }  
  },
  { 
    "$limit" => 10
  }
)