zoukankan      html  css  js  c++  java
  • MongoDB简单使用 —— 基本操作

    本身MongoDB直接支持的是Bson文档,Bson文档在C#的官方驱动中对应的是BsonDocument类:

    var bsonDoc = new BsonDocument()
    {
        ["_id"]  = "123",
        ["Name"] = "Jack",
        ["Age"]  = 32,
    };

    由于Bson和Json本身非常类似,所以它和Json一样,和.net对象之间互相转换是非常容易的。

    public class Person
    {
        public string Id   { getset; } = "123";
        public string Name { getset; }
        public int    Age  { getset; }
    }

    var person = BsonSerializer.Deserialize<Person>(bsonDoc);
    var doc = person.ToBsonDocument();

    MongoDB本身的增删改查都是直接针对Bson文档进行的:

    var collection = database.GetCollection<BsonDocument>("foo");
    collection.InsertOne(bsonDoc);

    但为了使用方便,也可以使用强类型的集合。

    var collection = database.GetCollection<Person>("foo");

    var person = new Person()
    {
        Id   = "365",
        Name = "Jack",
        Age  = 32,
    };

    //
    插入
    collection.InsertOne(person);
    //
    查询
    collection.Find(i => i.Name == "Jack");
    //
    更新
    collection.ReplaceOne(i => i.Id == "365", person);
    //
    删除
    collection.DeleteOne(i => i.Id == "365");

    由于支持Linq,用起来还是非常方便的。当然,也可以使用MongoDb本身的查询功能。

    //查询
    result = collection.Find(Builders<Person>.Filter.Eq(i=>i.Name"Jack")).ToList();

    //
    更新
    collection.ReplaceOne(Builders<Person>.Filter.Eq(i => i.Id"365"), person);

    //
    更新部分字段
    collection.UpdateOne(Builders<Person>.Filter.Eq(i => i.Id"365"),
        Builders<Person>.Update.Set(i => i.Age, 30));

    //
    删除
    collection.DeleteOne(Builders<Person>.Filter.Eq(i => i.Id"365"));

    甚至的,如果也可以使用MongDB的命令,也可以直接使用Mongo命令,更加简洁。

    //查询
    result = collection.Find("{ Name: 'Jack' }").ToList();

    //
    更新
    collection.UpdateOne("{Name: 'Jack' }""{$set:{'Age':'37'}}");

    //
    删除
    collection.DeleteOne("{Name: 'Jack' }");

    这种方式类似Sql,非常简洁,但是失去了类型检查,至于如何使用,则需要看具体场合了。

    参考文档:

  • 相关阅读:
    如何阅读大型项目的代码?
    常用法律常识链接
    ubuntu 常用参数设置
    访问内存过程小结
    Netfilter深度解剖
    linux中的namespace
    style="display:none"隐藏html的标签
    xshell用ssh连接VMware中的ubuntu
    rails rake和示例
    rails中render 和 redirect_to的区别, each只能用在数组中,如果只有一个或者零个项,用each方法会报错undefined method `each' for #...
  • 原文地址:https://www.cnblogs.com/TianFang/p/8836417.html
Copyright © 2011-2022 走看看