MONGO
1. 模糊匹配
比较 : > $gt , >= $gte, < $lt, <= $lte, != $ne
eg. find({age:{$lt:100,$gt:20}})
在与不在: $in & $nin
eg. find({age:{$in:[11,22]}})
或者:$or
eg. find({$or:[{age:11},{age:22}]})
find({$or:[{age:11},{name:'xttt'}]})
非: $not 余:$mod
$mod会将查询的值除以第一个给定的值,若余数等于第二个给定的值,则返回该结果。
$not与正则表达式联合使用时极为有效,用来查找那些与特定模式不匹配的文档。
eg. find({age:{$mod:[11,0]}})
{ "age" : 11 }
{ "age" : 22 }
eg. find({age:{$not:{$mod:[11,0]}}})
{ "age" : 111 }
***************************************************
数据导出:mongoexport -d test -c students -o students.dat
默认导出了JSON格式的数据。如果我们需要导出CSV格式的数据,则需要使用--csv参数
mongoexport -d test -c students --csv -f classid,name,age -o students_csv.dat
mongoexport --port 27019 -d cia -c cia_intel -q "{'status': 'undo' ,'inserttime':{'\$gte': 1498266000.0, '\$lt':1498352400.0},'level': {'\$in': ['high', 'mid', 'low']}}" -o ciaintel.dat
参数说明:
-h:指明数据库宿主机的IP --port 端口号,默认可以不用
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导出那些列
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件
数据导入: mongoimport -d test -c students students.dat 导入json格式
导入JSON格式的文件中的内容,如果要导入CSV格式文件中的内容,则需要通过--type参数指定导入格式,
mongoimport -d test -c students --type csv --headerline --file students_csv.dat
mongoimport --port 27019 -d cia -c cia_intel_unsend ciaintel.dat
db.cia_intel_unsend.update({ "_id" : ObjectId("594dbb743418ec1d48fe38bf")},{$set:{count:10}},{multi:1})
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导入那些列
#######################################
mongo 性能考虑:
a.索引巨大的内存占用,100万条索引约占50M内存
b.findOne()需要过滤不用的数据,不然网络传输压力大。不要被他表象的优雅迷惑
c.Update({_id:xxx},{$set:{"Items.3.Item.Health":38}});//修改第三把武器的健康值
至于一次修改和批量修改,MongoDB默认100ms flush一次(2.x),只要两次修改比较贴近,被一起保存的可能性很高。
建立索引时需要注意:
1.做什么样的查询,那些键需要索引
2.每个键的索引方向
3.如何应对扩展,是否有索引排列,使常用数据更多的保存再内存
何时分片:
1.机器磁盘不够用
2.单个mongo性能不足
3.想大量的数据在内存
mongo 集群问题,
传送门:http://www.cnblogs.com/lanceyan/tag/mongodb/
浙公网安备 33010602011771号