C#中應用1.7版本驅動操作MongoDB簡略例子。本站提示廣大學習愛好者:(C#中應用1.7版本驅動操作MongoDB簡略例子)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中應用1.7版本驅動操作MongoDB簡略例子正文
//創立數據庫鏈接
//在1.7的版本驅動中如許寫是會報 MongoServer辦法已過時的
//MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);
//帶有效戶名,暗碼的以下寫法,不帶的則直接ip+端口便可以
const string connectionString = "mongodb://city:[email protected]:27017";
//獲得一個客戶端對象的援用 GetServer()對辦事器對象的援用
var Server = new MongoClient(connectionString).GetServer();
//到一個數據庫對象的援用
var client = Server.GetDatabase("City");
//對一組對象的援用
var collection = client.GetCollection<citys>("citys");
//拔出一個 實體
for (int i = 0; i < dt.Rows.Count; i++)
{
collection.Insert(new citys
{
province = dt.Rows[i][0].ToString(),
city = dt.Rows[i][1].ToString(),
county = dt.Rows[i][2].ToString(),
areacode = "0" + dt.Rows[i][3].ToString(),
postalcode = dt.Rows[i][3].ToString()
});
}
以下是git上的贊助文檔 地址是:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/
將一個援用添加到c#司機dll
右鍵單擊 援用 文件夾在Visual Studio的處理計劃 探險家和選擇 添加 參考…… 。 導航到文件夾 c#驅動法式dll被裝置並添加一個援用以下 dll:
MongoDB.Bson.dll
MongoDB.Driver.dll
作為一種替換辦法可使用 NuGet 擔保理器添加c# 驅動法式包來您的處理計劃。
添加所需的 應用 語句
作為一個最低須要應用語句以下:
using MongoDB.Bson;
using MongoDB.Driver;
另外,您會常常添加一個或多個應用 聲明:
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;
還有其他稱號空間,只會在特別的須要 用例。
獲得一個客戶端對象的援用
最簡略的辦法取得一個客戶對象的援用是應用 銜接字符串:
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
假如你想將客戶端對象存儲在一個全局變量。 MongoClient 是線程平安的。
對辦事器對象的援用
要從客戶端到辦事器對象的援用對象,寫 如許的:
var server = client.GetServer();
到一個數據庫對象的援用
去到一個數據庫對象的援用從辦事器對象,寫 如許的:
var database = server.GetDatabase("test"); // "test" is the name of the database
假如您應用多個數據庫,挪用 GetDatabase 再次為每一個 您想要應用數據庫。
BsonDocument 對象模子與您本身的域類
有兩種辦法可以處置聚集:
應用 BsonDocument 對象模子
應用本身的域類
您將應用 BsonDocument 當數據對象模子 任務是如斯的自在情勢,它將是艱苦的或弗成能的 界說的域類。
由於它是如斯輕易應用本身的域類 疾速啟動將假定你要如許做。 c#驅動法式 供給,他們可以處置您的域類:
有一個無參數的結構函數
界說公共讀/寫數據的字段或屬性 存儲在數據庫中
這些需求在實質上是雷同的。net的實行 XmlSerializer。
另外,假如您的域類將被用作根 文檔必需包括一個 ID 字段或屬性(平日是定名 ID 雖然你可以籠罩,假如需要)。 平日情形下, ID 將類型的 ObjectId ,但沒無限制的類型 的成員。
斟酌上面的類界說:
public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
對一組對象的援用
你會獲得一個包括援用聚集 實體 文件是如許的:
// "entities" is the name of the collection
var collection = database.GetCollection<Entity>("entities");
拔出文檔
拔出一個 實體 :
var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id; // Insert will set the Id if necessary (as it was in this example)
找到一個現有的文檔
在這個示例中,我們將讀回 實體 假定我們曉得 ID 值:
var query = Query<Entity>.EQ(e => e.Id, id);
var entity = collection.FindOne(query);
查詢<單元> .EQ 應用 查詢< T > 構建器類來構建 查詢。 lambda表達式 E = > e.Id 是翻譯 _ID 。 這是 字段的稱號存儲在數據庫中。
請留意
平日的稱號字段在數據庫中是完整雷同的 正如它的名字域類中的字段或屬性,然則 ID 是一個破例,映照到嗎 _ID 在數據庫中。
其他查詢操作符包含: GT , 一種 , 在 , LT , LTE , 鄰近 , 西南 , 和 , 或 (和其他一些更多 專業的)。
保留一個文檔
你可以保留更改現有的文檔以下:
entity.Name = "Dick";
collection.Save(entity);
更新現有的文檔
另外一種選擇 保留 是 更新 。 所分歧的是, 保留 將全部文檔發送回辦事器,然則 更新 發的變更。 例如:
var query = Query<Entity>.EQ(e => e.Id, id);
var update = Update<Entity>.Set(e => e.Name, "Harry"); // update modifiers
collection.Update(query, update);
上面的例子應用了 更新< T > 構建器輕松地構建更新 潤飾符。
刪除一個現有的文檔
刪除一個現有的文檔聚集你寫:
var query = Query<Entity>.EQ(e => e.Id, id);
collection.Remove(query);
你不須要挪用銜接或斷開銜接
c#司機有一個銜接池應用銜接到辦事器 效力。 不須要德律風 銜接 或 斷開 ; 讓司機照料銜接(挪用 銜接 是有害的,然則打德律風呢 斷開 是欠好的,由於它封閉 銜接池中的銜接)。
完全的示例法式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
namespace ConsoleApplication1
{
public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");
var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id;
var query = Query<Entity>.EQ(e => e.Id, id);
entity = collection.FindOne(query);
entity.Name = "Dick";
collection.Save(entity);
var update = Update<Entity>.Set(e => e.Name, "Harry");
collection.Update(query, update);
collection.Remove(query);
}
}
}