zoukankan      html  css  js  c++  java
  • MongoDB学习笔记(二、MongoDB查询)

    目录:

    • MongoDB数据类型
    • MongoDB新增语法
    • MongoDB查询语法
    • MongoDB查询选择器
    • MongoDB关联查询

    MongoDB数据类型:

    MongoDB新增语法:

    语法:db.collectionName.insert(document)

    示例

    1、db.local.insert({name:'thinking in java', price:88.08})

    2、或者是先定义变量

    var data = {name:'jdr', age:18}

    db.local.insert(data)

    MongoDB查询语法:

    db.collectionName.find(query, projection)

    参数说明

    1、query:可选;可使用查询操作符指定查询条件。

    2、projection:可选;可指定返回的键,若不指定则返回所有的键(1=显示,0=不展示)

    示例

    1、查询所有:db.local.find()

    2、查询指定条件:db.local.find({name: 'zd'})

    3、如果想要返回的数据易读的话可加上pretty():db.local.find({name: 'zd'}).pretty()

    4、指定返回name:db.local.find({},{name:1})

    5、指定不返回name:db.local.find({},{name:0})

    MongoDB查询选择器:

    1、范围选择器、布尔选择器、正则选择器:

    2、排序选择器:1=升序,-1=降序

    db.local.find().sort({name:1, age:-1})

    3、跳过和限制选择器,跳过前面n条数据,限制和mysql中limit效果一致

    db.local.find().skip(1).limit(2)

    4、过滤重复字段选择器,和mysql中distinct一致

    db.local.distinct()

    5、 数组选择器

    )单元素查询:db.local.find({'favorites.movies':'凹凸曼'})

    )多元素查询:db.local.find({'favorites.movies':{'$all':['阿凡达', '泰坦尼克号']}})

    )精准查找:db.local.find({'favorites.movies':['凹凸曼', '美队2', '喜羊羊与灰太狼']})

    )索引查询(查找数组中第一个钢铁侠的喜欢电影):db.local.find({'favorites.movies.0':'钢铁侠'})

    )数组子集:db.local.find({}, {'favorites.movies':{'$slice':[3,3], '_id':1}})

    '$slice':[3,3]:跳过前3条数据并取3条数据

    6、对象数组选择器

    )单元素查询:db.local.find({'citys':{'code':0001, 'addr':'上海'}})

    )多元素查询:db.local.find({'comments':{'$elemMatch':{'movies':'倩女幽魂', 'content':'好看!'}}})

    demo:https://github.com/mrjdrs/mongodb-demo/tree/master/mongo-selector

    MongoDB关联查询:

    因mongo单个文档大小不能超过16M,但因特殊的业务场景我们又不得不这样存储,为了解决这一问题mongo提供了DBRef。

    DBRef语法:

    1、$ref:引用文档所在聚合名称。

    2、$id:所在集合的id值。

    3、$db:可选;集合所在库的实例名。

    示例

    db.collectionName.insert({"name":"zd", "userId":
        {"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"}
    })
    db.collectionName.insert({"name":"zd", "userId":
        [
            {"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"},
            {"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"},
        ]
    })
    
    db.collectionName.findOne({"name":"zd"}).userId.fetch()
    db.collectionName.findOne({"name":"zd"}).userId[0].fetch()
  • 相关阅读:
    JqGrid常用示例
    jqGrid无刷新分页,添加行按钮
    C#两个实体之间相同属性的映射
    Log4Net日志记录
    C#压缩图片
    ASP.Net MVC4.0+无刷新分页
    世界各个国家中英文sql建表
    ASP.NET多语言
    分布式事务处理中的幂等性
    分布式事务前瞻-接口幂等性
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/11941146.html
Copyright © 2011-2022 走看看