MongoDB提供的C#开发接口,先从下载开始,然后是插入、查询、更新。
先要开启MongoDB服务。
下载http://github.com/mongodb/mongo-csharp-driver/downloads.每个版本会有两个驱动模式,一个是.msi,一个是.zip。
VS:2013,MongoDB:3.2.0
打开VS2013,新建控制台程序,增加下载好的两个引用(MongoDB.Bson.dll,MongoDB.driver.dll)
1、插入数据
static void Main(string[] args)
{
//数据库连接字符串
string connectionString = "mongodb://127.0.0.1:27017";
//得到一个对象实例的连接
var client = new MongoClient(connectionString);
var server = client.GetServer();
//MongoServer server = MongoServer.Create(connectionString);
//指定安全证书
MongoCredentials credential = new MongoCredentials("wander", "123456");
//获得一个"mongoDB"连接对象
MongoDatabase mydb = server.GetDatabase("test", credential);
//声明一个Collection对象
MongoCollection coll = mydb.GetCollection("t1");
//申请一个文档对象,用于存储数据
BsonDocument info = new BsonDocument
{
{"x",203},
{"y",102},
{"count",1}
};
//申请一个文档对象,用于存储数据,且用info作为它的嵌入式文档
BsonDocument doc = new BsonDocument
{
{"name","MongoDB"},
{"type","database"},
{"count",1},
{"info",info}
};
//调用collection的insert方法,将数据永久存储到磁盘上
coll.Insert(doc);
}
查询数据
static void Main(string[] args)
{
//数据库连接字符串
string connectionString = "mongodb://127.0.0.1:27017";
//得到一个对象实例的连接
var client = new MongoClient(connectionString);
var server = client.GetServer();
//MongoServer server = MongoServer.Create(connectionString);
//指定安全证书
MongoCredentials credential = new MongoCredentials("wander", "123456");
//获得一个"mongoDB"连接对象
MongoDatabase mydb = server.GetDatabase("test", credential);
//声明一个Collection对象
MongoCollection<BsonDocument> coll = mydb.GetCollection<BsonDocument>("t1");
//获取t1表的第一条数据
BsonDocument bsdoc = (BsonDocument)coll.FindOne();
Console.WriteLine(bsdoc);
Console.ReadLine();
}
//更新数据
static void Main(string[] args)
{
//数据库连接字符串
string connectionString = "mongodb://127.0.0.1:27017";
//得到一个对象实例的连接
var client = new MongoClient(connectionString);
var server = client.GetServer();
//MongoServer server = MongoServer.Create(connectionString);
//指定安全证书
MongoCredentials credential = new MongoCredentials("wander", "123456");
//获得一个"mongoDB"连接对象
MongoDatabase mydb = server.GetDatabase("test", credential);
//声明一个Collection对象
MongoCollection<BsonDocument> coll = mydb.GetCollection<BsonDocument>("t1");
//定义一个查询对象,相当于SQL中的where语句
var queryDoc = new QueryDocument { { "name", "MongoDB" } };
//定义一个更新对象,相当于SQL中的set语句
var updateDoc = new UpdateDocument { { "$set", new BsonDocument("type", "NoSQL") } };
//将查询对象和更新对象作为参数传递给Update来完成更新
coll.Update(queryDoc, updateDoc);
Console.ReadLine();
}
在操作上述代码时,我遇到一个错误,错误内容是
{"Command 'authenticate' failed: auth failed (response: { \"ok\" : 0.0, \"errmsg\" : \"auth failed\", \"code\" : 18 })"}
查找原因:在Shell里面创建用户,授权用户后,显示是成功,执行程序后依旧有问题。
解决办法:
use admin
show collections
db.system.users.remove({});
de.system.version.remove({});db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })关键的一步
用户已清空了,现在要新建立用后,从3.2.0开始创建用户方式修改为:
use test
db.createUser(
{
user: "wander",
pwd: "123456",
roles: [ ]
}
)
db.auth("wander","123456");
问题解决了。