MongoDB是NoSql中一直使用比较广泛的数据库,闲来无事,学习学习
至于如何安装,配置MongoDB的环境请查看:http://cn.docs.mongodb.org/manual/installation/,里面基本的CRUD也详细介绍了,仔细看看
我是安装了Window7 64位使用的版本。
由于我使用C#,所以还得去下个MongoDB的C#下的驱动,请查看:http://www.mongodb.org/display/DOCS/CSharp+Language+Center
安装好驱动后,把里面的MongoDB.Driver.dll,MongoDB.BSon.dll引用到工程中,这样就万事具备了,开始开工了
简单的插入和查询数据:
class Person
{
public ObjectId _id;//BsonType.ObjectId//这个对应了 MongoDB.Bson.ObjectId 对目前的 mongdb 来说必须要有这个
public int Uid;
public string Name;
public string PassWord;
}
class Program
{
static void Main(string[] args)
{
string connectionString = "mongodb://localhost";
string databasename = "myDatabase";
string collectionName = "myCollection";
MongoClient client = new MongoClient(connectionString);
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase("test");
// MongoCollection<Entity> collection = database.GetCollection<Entity>("entities");
//Entity entity = new Entity { Name = "Tom" };
//collection.Insert(entity);
//var id = entity.Id;
//Console.WriteLine(id);
//var query = Query.EQ("_id", id);
//entity = collection.FindOne(query);
//entity.Name = "Dick";
//collection.Save(entity);
//var update = Update.Set("Name", "Harry");
//collection.Update(query, update);
//entity = collection.FindOne(query);
//Console.WriteLine(entity.Name);
//collection.Remove(query);
MongoCollection mongoCollection = database.GetCollection("demo");
//先插入数据
MongoInsert(server, mongoCollection);
//再查下数据,我暂时屏蔽了,等插入之后,就将插入那句给屏蔽,查询的这句放开
// MongoSelect(mongoCollection);
Console.ReadKey();
}
private static void MongoSelect(MongoCollection mongoCollection)
{
//更新字段名称,由于我在插入时,把第一行的Password的名字写错了,跟后面两行不同,就改下名称
var queryName = Query.EQ("Uid", 123);
var updateName = Update.Rename("Password", "PassWord");
mongoCollection.Update(queryName, updateName);
/*---------------------------------------------
* sql : SELECT * FROM table
*---------------------------------------------
*/
MongoCursor<Person> p = mongoCollection.FindAllAs<Person>(); //第一种读取的方式
foreach (var i in p)
{
Console.WriteLine("_id:{0}", i._id);
Console.WriteLine(i.Uid + "\\" + i.Name + "\\" + i.PassWord);
}
/*---------------------------------------------
* sql : SELECT * FROM table WHERE Uid > 10 AND Uid < 20
*---------------------------------------------
*/
QueryDocument query = new QueryDocument();
BsonDocument b = new BsonDocument();
b.Add("$gt", 100);
b.Add("$lt", 124);
query.Add("Uid", b);
MongoCursor<Person> m = mongoCollection.FindAs<Person>(query);
foreach (BsonDocument book in mongoCollection.FindAs<BsonDocument>(query)) //第二种读取的方式
{
Console.WriteLine(book.ToString());
Console.WriteLine("_id:{0}", book["_id"].AsObjectId);
Console.WriteLine(book["Uid"].AsInt32 + "\\" + book["Name"].AsString + "\\" + book["PassWord"].AsString);
}
/*-----------------------------------------------
* sql : SELECT COUNT(*) FROM table WHERE Uid > 10 AND Uid < 20
*-----------------------------------------------
*/
long c = mongoCollection.Count(query);
/*-----------------------------------------------
* sql : SELECT Name FROM table WHERE Uid > 10 AND Uid < 20
*-----------------------------------------------
*/
FieldsDocument f = new FieldsDocument();
f.Add("Name", 1);
MongoCursor<Person> mc = mongoCollection.FindAs<Person>(query).SetFields(f);
/*-----------------------------------------------
* sql : SELECT * FROM table ORDER BY Uid DESC LIMIT 10,10
*-----------------------------------------------
*/
SortByDocument s = new SortByDocument();
s.Add("Uid", -1); //-1=DESC
MongoCursor<Person> ms = mongoCollection.FindAllAs<Person>().SetSortOrder(s).SetSkip(10).SetLimit(10);
}
private static void MongoInsert(MongoServer server, MongoCollection mongoCollection)
{
//普通插入
server.Connect();
var o = new { Uid = 123, Name = "xixiNormal", Password = "111111" };
mongoCollection.Insert(o);
//对象插入
Person p = new Person { Uid = 124, Name = "xixiObject", PassWord = "222222" };
mongoCollection.Insert(p);
//BsonDocument插入
BsonDocument b = new BsonDocument();
b.Add("Uid", 125);
b.Add("Name", "xixiBson");
b.Add("PassWord", "333333");
mongoCollection.Insert(b);
}