MongoDB CRUD Operations

根据官网Example,整理C#连接MongoDB的基础操作笔记:

数据库连接:https://docs.mongodb.com/guides/server/read/index.html

基础操作:https://docs.mongodb.com/manual/crud/

 

1.连接Mongodb

var client = new MongoClient("mongodb://$[username]:$[password]@$[hostlist]/$[database]?authSource=$[authSource]");

//Switch to the test database and access the inventory collection.
var database = client.GetDatabase("test");
var collection = database.GetCollection<BsonDocument>("inventory");

 

2.Insert

 2.1 Insert a Single Document

var document = new BsonDocument
{
    { "item", "canvas" },
    { "qty", 100 },
    { "tags", new BsonArray { "cotton" } },
    { "size", new BsonDocument { { "h", 28 }, { "w", 35.5 }, { "uom", "cm" } } }
};
collection.InsertOne(document);

 

2.2 Insert Multiple Documents

var documents = new BsonDocument[]
{
    new BsonDocument
    {
        { "item", "journal" },
        { "qty", 25 },
        { "tags", new BsonArray { "blank", "red" } },
        { "size", new BsonDocument { { "h", 14 }, { "w", 21 }, {  "uom", "cm"} } }
    },
    new BsonDocument
    {
        { "item", "mat" },
        { "qty", 85 },
        { "tags", new BsonArray { "gray" } },
        { "size", new BsonDocument { { "h", 27.9 }, { "w", 35.5 }, {  "uom", "cm"} } }
    },
    new BsonDocument
    {
        { "item", "mousepad" },
        { "qty", 25 },
        { "tags", new BsonArray { "gel", "blue" } },
        { "size", new BsonDocument { { "h", 19 }, { "w", 22.85 }, {  "uom", "cm"} } }
    },
};
collection.InsertMany(documents);

 

3.Query

3.1 Select All Documents in a Collection

var filter = Builders<BsonDocument>.Filter.Empty;
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory

 

3.2 Specify Equality Condition

var filter = Builders<BsonDocument>.Filter.Eq("status", "D");
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory WHERE status = "D"

 

3.3 Specify Conditions Using Query Operators

var filter = Builders<BsonDocument>.Filter.In("status", new[] { "A", "D" });
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory WHERE status in ("A", "D")

 

3.4 Specify AND Conditions

var builder = Builders<BsonDocument>.Filter;
var filter = builder.And(builder.Eq("status", "A"), builder.Lt("qty", 30));
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory WHERE status = "A" AND qty < 30

 

3.5 Specify OR Conditions

var builder = Builders<BsonDocument>.Filter;
var filter = builder.Or(builder.Eq("status", "A"), builder.Lt("qty", 30));
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory WHERE status = "A" OR qty < 30

 

3.6 Specify AND as well as OR Conditions

var builder = Builders<BsonDocument>.Filter;
var filter = builder.And(
    builder.Eq("status", "A"),
    builder.Or(builder.Lt("qty", 30), builder.Regex("item", new BsonRegularExpression("^p"))));
var result = collection.Find(filter).ToList();

相当于sql

SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")

 

4.Update

4.1 Update a Single Document

var filter = Builders<BsonDocument>.Filter.Eq("item", "paper");
var update = Builders<BsonDocument>.Update.Set("size.uom", "cm").Set("status", "P").CurrentDate("lastModified");
var result = collection.UpdateOne(filter, update);

 

4.2 Update Multiple Documents

var filter = Builders<BsonDocument>.Filter.Lt("qty", 50);
var update = Builders<BsonDocument>.Update.Set("size.uom", "in").Set("status", "P").CurrentDate("lastModified");
var result = collection.UpdateMany(filter, update);

 

5.Delete

5.1 Delete All Documents

var filter = Builders<BsonDocument>.Filter.Empty;
var result = collection.DeleteMany(filter);

 

5.2 Delete All Documents that Match a Condition

var filter = Builders<BsonDocument>.Filter.Eq("status", "A");
var result = collection.DeleteMany(filter);

 

5.3 Delete Only One Document that Matches a Condition

var filter = Builders<BsonDocument>.Filter.Eq("status", "D");
var result = collection.DeleteOne(filter);

注:The following example deletes the first document where status is "D"

 

转载于:https://my.oschina.net/u/3578334/blog/1852519

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值