zoukankan      html  css  js  c++  java
  • 4.1 MongDB基础-查询子文档

    老规矩,先添加数据

    var documents = new[]
    {
        new BsonDocument
        {
            { "item", "journal" },
            { "qty", 25 },
            { "size", new BsonDocument { { "h", 14 }, { "w", 21 }, { "uom", "cm" } } },
            { "status", "A" }
        },
        new BsonDocument
        {
            { "item", "notebook" },
            { "qty", 50 },
            { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } },
            { "status", "A" }
        },
        new BsonDocument
        {
            { "item", "paper" },
            { "qty", 100 },
            { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } },
            { "status", "D" }
        },
        new BsonDocument
        {
            { "item", "planner" },
            { "qty", 75 },
            { "size", new BsonDocument { { "h", 22.85 }, { "w", 30 }, { "uom", "cm" } } },
            { "status", "D" }
        },
        new BsonDocument
        {
            { "item", "postcard" },
            { "qty", 45 },
            { "size", new BsonDocument { { "h", 10 }, { "w", 15.25 }, { "uom", "cm" } } },
            { "status", "A" } },
    };
    collection.InsertMany(documents);
    

    匹配整个子文档

    //语法
    Builders<BsonDocument>.Filter.Eq(<field>, <value>)
    // 实例
    var filter = Builders<BsonDocument>.Filter.Eq("size", new BsonDocument { { "h", 14 }, { "w", 21 }, { "uom", "cm" } });
    var result = collection.Find(filter).ToList();
    //必须全部相同

    指定匹配子文档中的某个字段

    var filter = Builders<BsonDocument>.Filter.Eq("size.uom", "in");
    var result = collection.Find(filter).ToList();

    使用查询操作符匹配

    //例子
    var builder = Builders<BsonDocument>.Filter;
    builder.And(builder.Eq(<field1>, <value1>), builder.Lt(<field2>, <value2>));
    //语法
    var filter = Builders<BsonDocument>.Filter.Lt("size.h", 15);
    var result = collection.Find(filter).ToList();

    指定 And 条件

    var builder = Builders<BsonDocument>.Filter;
    var filter = builder.And(builder.Lt("size.h", 15), builder.Eq("size.uom", "in"), builder.Eq("status", "D"));
    var result = collection.Find(filter).ToList();
  • 相关阅读:
    15年里,对您触动最大的中西方管理著作或思想是什么?
    [代言]加入微软中国研发团队的机会
    CSS3 column属性族firefox浏览器下的问题
    JavaScript中__proto__与prototype的关系
    JavaScript对象模型执行模型
    【转】一步一步学Linq to sql(九):其它补充
    WPF基础之样式设置和模板化
    【转】一步一步学Linq to sql(十):分层构架的例子
    WPF基础之基元素
    WPF基础之属性系统
  • 原文地址:https://www.cnblogs.com/maanshancss/p/12978141.html
Copyright © 2011-2022 走看看