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/

 

posted on 2017-04-15 21:06  小章博客  阅读(184)  评论(0)    收藏  举报