C#中使用1.7版本驅(qū)動操作MongoDB簡單例子
//創(chuàng)建數(shù)據(jù)庫鏈接
//在1.7的版本驅(qū)動中這樣寫是會報 MongoServer方法已過時的
//MongoServer server = MongoDB.Driver.MongoServer.Create(strconn);
//帶有用戶名,密碼的如下寫法,不帶的則直接ip+端口就可以
const string connectionString = "mongodb://city:liyang@192.168.1.211:27017";
//得到一個客戶端對象的引用 GetServer()對服務(wù)器對象的引用
var Server = new MongoClient(connectionString).GetServer();
//到一個數(shù)據(jù)庫對象的引用
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的解決方案 探險家和選擇 添加 參考…… 。 導(dǎo)航到文件夾 c#驅(qū)動程序dll被安裝并添加一個引用以下 dll:
MongoDB.Bson.dll
MongoDB.Driver.dll
作為一種替代方法可以使用 NuGet 包管理器添加c# 驅(qū)動程序包來您的解決方案。
添加所需的 使用 語句
作為一個最低需要使用語句如下:
using MongoDB.Bson;
using MongoDB.Driver;
此外,您會經(jīng)常添加一個或多個使用 聲明:
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;
還有其他名稱空間,只會在特殊的需要 用例。
得到一個客戶端對象的引用
最簡單的方法獲得一個客戶對象的引用是使用 連接字符串:
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
如果你想將客戶端對象存儲在一個全局變量。 MongoClient 是線程安全的。
對服務(wù)器對象的引用
要從客戶端到服務(wù)器對象的引用對象,寫 這樣的:
var server = client.GetServer();
到一個數(shù)據(jù)庫對象的引用
去到一個數(shù)據(jù)庫對象的引用從服務(wù)器對象,寫 這樣的:
var database = server.GetDatabase("test"); // "test" is the name of the database
如果您使用多個數(shù)據(jù)庫,調(diào)用 GetDatabase 再次為每個 您想要使用數(shù)據(jù)庫。
BsonDocument 對象模型與您自己的域類
有兩種方法可以處理集合:
使用 BsonDocument 對象模型
使用自己的域類
您將使用 BsonDocument 當(dāng)數(shù)據(jù)對象模型 工作是如此的自由形式,它將是困難的或不可能的 定義的域類。
因為它是如此容易使用自己的域類 快速啟動將假設(shè)你要這樣做。 c#驅(qū)動程序 提供,他們可以處理您的域類:
有一個無參數(shù)的構(gòu)造函數(shù)
定義公共讀/寫數(shù)據(jù)的字段或?qū)傩?存儲在數(shù)據(jù)庫中
這些需求在本質(zhì)上是相同的。net的實施 XmlSerializer。
此外,如果您的域類將被用作根 文檔必須包含一個 ID 字段或?qū)傩?通常是命名 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)
找到一個現(xiàn)有的文檔
在這個示例中,我們將讀回 實體 假設(shè)我們知道 ID 值:
var query = Query<Entity>.EQ(e => e.Id, id);
var entity = collection.FindOne(query);
查詢<單位> .EQ 使用 查詢< T > 構(gòu)建器類來構(gòu)建 查詢。 lambda表達(dá)式 E = > e.Id 是翻譯 _ID 。 這是 字段的名稱存儲在數(shù)據(jù)庫中。
請注意
通常的名稱字段在數(shù)據(jù)庫中是完全相同的 正如它的名字域類中的字段或?qū)傩?但是 ID 是一個例外,映射到嗎 _ID 在數(shù)據(jù)庫中。
其他查詢操作符包括: GT , 一種 , 在 , LT , LTE , 附近 , 東北 , 和 , 或 (和其他一些更多 專業(yè)的)。
保存一個文檔
你可以保存更改現(xiàn)有的文檔如下:
entity.Name = "Dick";
collection.Save(entity);
更新現(xiàn)有的文檔
另一種選擇 保存 是 更新 。 所不同的是, 保存 將整個文檔發(fā)送回服務(wù)器,但是 更新 發(fā)的變化。 例如:
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 > 構(gòu)建器輕松地構(gòu)建更新 修飾符。
刪除一個現(xiàn)有的文檔
刪除一個現(xiàn)有的文檔集合你寫:
var query = Query<Entity>.EQ(e => e.Id, id);
collection.Remove(query);
你不需要調(diào)用連接或斷開連接
c#司機有一個連接池使用連接到服務(wù)器 效率。 不需要電話 連接 或 斷開 ; 讓司機照顧連接(調(diào)用 連接 是無害的,但是打電話呢 斷開 是不好的,因為它關(guān)閉 連接池中的連接)。
完整的示例程序
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);
}
}
}
相關(guān)文章
C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實例詳解
這篇文章主要介紹了C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實現(xiàn)方法,結(jié)合實例形式較為詳細(xì)的分析了單鏈表的原理、定義與C#具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)
這篇文章主要介紹了DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)的解決辦法2015-09-09C#實現(xiàn)的簡單整數(shù)四則運算計算器功能示例
這篇文章主要介紹了C#實現(xiàn)的簡單整數(shù)四則運算計算器功能,涉及C#界面布局、事件響應(yīng)及數(shù)值運算等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09C#中WPF ListView綁定數(shù)據(jù)的實例詳解
這篇文章主要介紹了C#中WPF ListView綁定數(shù)據(jù)的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10