NoSQL非关系型数据库支持CAP定理和最终一致性的特性,所以分布式系统中可以完美的结合,提高性能。
第一步:
新建项目
NuGet管理引入了 “MongoDB.Driver";官方链接:http://mongodb.github.io/mongo-csharp-driver/
第二步:
实例化连接
// To directly connect to a single MongoDB server
// (this will not auto-discover the primary even if it's a member of a replica set)
var client = new MongoClient();
// or use a connection string
var client = new MongoClient("mongodb://localhost:27017");
// or, to connect to a replica set, with auto-discovery of the primary, supply a seed list of members
var client = new MongoClient("mongodb://localhost:27017,localhost:27018,localhost:27019");
第三步:
获取数据库
_database = client.GetDatabase(databaseName);
第四步:增删改查操作
增:
var document = new MongoDBPostTest
{
{ "name", "MongoDB" },
{ "type", "Database" },
{ "count", 1 }
};
collection.InsertOne(document);
await collection.InsertOneAsync(document);
批量加还可以collection.InsertMany(list);
删除:
var collection = _database.GetCollection<T>(typeof(T).Name);
var filter = Builders<T>.Filter.Lt("count", 100); //小于100
var result = collection.DeleteOne(filter);
更改:
var filter = Builders<BsonDocument>.Filter.Eq("name", "zhangshan");
var update = Builders<MongoDBPostTest>.Update.Set("name", "zhangshan");
collection.UpdateOne(filter, update);
await collection.UpdateOneAsync(filter, update);
查询:
Find方法 四个方法重载
var data = collection.Find(new MongoDBPostTest()).ToList();
var data = await collection.Find(new MongoDBPostTest()).ToListAsync();
排序
var filter = Builders<BsonDocument>.Filter.Exists("i");
var sort = Builders<BsonDocument>.Sort.Descending("i");
var data = collection.Find(filter).Sort(sort).First();
只要某个字段
var projection = Builders<BsonDocument>.Projection.Exclude("_id");
var data = collection.Find(new BsonDocument()).Project(projection).First();
过滤
var filter = Builders<MongoDBPostTest>.Filter.Eq("name", "MongoDB");
var data = collection.Find(filter).ToList();
50 < i <= 100:
var filter = filterBuilder.Gt("i", 50) & filterBuilder.Lte("i", 100);