根据官网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"