美文网首页我爱编程
Mongodb部分小结

Mongodb部分小结

作者: 清晨起床敲代码 | 来源:发表于2018-07-26 11:46 被阅读0次

前言:近期使用mongodb的频率比较高,其中遇见一些坑,作此总结!本人mongo为3.4版本。

首先触雷多次的是mongo对象的遍历问题,之前使用过程中没有发现这个问题。


mongo对象只可遍历一次!

帅帅跟我说要想多次遍历就先转为数组,嗯,是个好方法!

然后就是一些小的技巧和小代码:

索引及中文排序

建立索引

如果没有对应的数据库,会自定创建,索引可加快查询速度:

a,mongodb新建collection 包含索引,且中文排序(在创建数据库时使用)
   db.dbname.createIndex({name: 1}, {collation: {locale: "zh"}})

注:name字段加索引,1为正向,-1为反向。

b,查询时按中文拼音排序
db.dbname.find({"查询条件"}).collation({'locale':'zh'}).sort([("attr_name1", 1), ('attr_name2', 1)])

其他:
1,查询array中包含某键值对的对象:
{
    "_id" : ObjectId("xxxxxxxx"),
    "name" : "ccc",
    "room_items" : [ 
        {
            "room_ref" : "aaa",
            "room_name" : "shuaishuai"
        }, 
        {
            "room_ref" : "bbb",
            "room_name" : "room_name"
        }
    ]
}

查询room_items数组中包含"room_name": "shuaishuai"的所有对象:

db.dbname.find({"room_items":{$elemMatch: { "room_name": "shuaishuai"}}})
2,查询mongo对象中存在某数组的对象:
db.dbanme.find({"_id": ObjectId("xxxxxxx"), "room_items": {"$exists": True}})

注:True 为存在,False为不存在(python 的true false 首字母大写)

3,将字典对象添加到array:
room_ob = {"name":"room1","ref":"xxxx"}
db.dbname.update({"_id": ObjectId("")}, {"$addToSet": {"room_items": room_ob}})

注:$addToSet 重复不添加(如果多个键值对相同但顺序不同,会认为是不同字典,这是一个坑)

4,更新数组中某个字典对象的部分值:
db.userinfo.update(
{
  "_id" : ObjectId("xxxxxx"),
  "room_items": { "$elemMatch": { "room_ref": "aaa" } } },
{ "$set": { "room_items.$.room_type" : 6, "room_items.$.room_name":"room1" } 
})

注:修改room_items数组中“room_ref”为"aaa"的对象的“room_type”及“room_name”值

5,删除数组中的内嵌字典文档
db.dbname.update({"_id": ObjectId(xxxx)},{"$pull":{"room_items":{"room_name": room1}}}

小结:目前使用的值得记录的大概这么多,以后再追加!

6,对正则的支持
db.common.find({"name":{"$regex": '^%s' % "ab" }})
等同
commons = Common.objects.raw({"name":{"$regex": '^%s' % "ab" }})

相关文章

  • Mongodb部分小结

    前言:近期使用mongodb的频率比较高,其中遇见一些坑,作此总结!本人mongo为3.4版本。 首先触雷多次的是...

  • mongdb使用小结

    mongdb使用小结 MongoDB 预编译二进制包下载地址:https://www.mongodb.com/do...

  • mongodb使用小结

    1)阿里云提供了三结点副本集、shard集群的,三结点副本在大部分情况下是已经够用的了,两点好处:1.支持动态加减...

  • MongoDB小结(更新中)

    因为即将的工作需要,昨天特地安装并简单学习了MongodDB 安装的版本是 2.6.9 学习方式是阅读*** 官方...

  • MongoDB 使用小结(一)

    1.生成自己的主键在项目中,最好不要把"_id"当做业务主键,也不要依赖它作为插入时间排序的依据。MongoDB在...

  • 明律部分小结

    明律部分共讲述了13位高僧的传记。 佛教戒律的产生,是为了自律以防范过错。所以,总是依据那些会导致犯下过错的因缘来...

  • 前端部分小结

    工作分配:DBA数据管理人员 前端移动端兼容少但是要响应式布局(根据设备的屏幕大小自适应) 刷新页面的情况下提交数...

  • localStorage部分小结

    一、什么是localStorage、sessionStorage 在HTML5中,新加入了一个localStora...

  • 小结

    To Do List mongoDB数据库学习 vertX框架学习 案例整理 mongoDB 这部分学习分为五块:...

  • mongo小试

    MongoDB的一些小结 强大 灵活 可扩展 1.扩展了关系型数据库的辅助索引 范围查询(range query)...

网友评论

    本文标题:Mongodb部分小结

    本文链接:https://www.haomeiwen.com/subject/wjgvmftx.html