MongoDb 相关
本文内容纲要:
本文地址:http://www.cnblogs.com/vnii/archive/2012/08/23/2652891.html
1.C#下对MongoDB中的数据分组Group
IMongoQueryquery=null;
query=Query.And(
Query.EQ("CityCode","hangzhou"),
Query.EQ("LT_IsBDT",1),
Query.EQ("LT_Checked",1)
);
Dictionary<string,int>dictionary=newDictionary<string,int>();
dictionary["num"]=0;
//IMongoGroupBygroupBy=null;
//groupBy=GroupBy.Keys("LTT_ID");
GroupByBuildergroupByBuilder=newGroupByBuilder(newstring[]{"LTT_ID","LTT_TypeName","LTT_ParentID"});
vartSmall=_mongoCollection.Group(query,groupByBuilder,BsonDocument.Create(dictionary),
BsonJavaScript.Create("function(doc,prev){prev.num++;}"),
BsonJavaScript.Create("function(doc){doc.count=doc.num;deletedoc.num;}")).ToList();
2.C#操作MongoDB的部分代码示例
MongoServer_mongoServer=MongoServer.Create("mongodb://192.168.90.245:10008/?safe=true");//连接数据库
MongoDatabase_mongoDatabase=_mongoServer.GetDatabase("MYDB");//选择数据库名
MongoCollectionMongoCt=_mongoDatabase.GetCollection("MyCollection");//选择集合,相当于表
//获取数据
publicList<InfoModel>GetTopicListByType(stringsKeyWord,intiPageSize,intiCurrPageIndex)
{
IMongoQueryquery=null;
query=Query.And(
Query.EQ("LT_IsBDT",1),
Query.EQ("LT_Checked",1),
Query.Or(Query.EQ("LT_Status",0),Query.EQ("LT_Status",1)),
Query.GTE("LT_CreateDate",DateTime.Now),
Query.Matches("LT_Title",BsonRegularExpression.Create("/.*"+sKeyWord+".*/"))
);
SortByDocumentsort=newSortByDocument{{"LT_CreateDate",-1}};
returnMongoCt.FindAs<InfoModel>(query).SetLimit(iPageSize).SetSkip(iPageSize*iCurrPageIndex).SetSortOrder(sort).ToList();
}
//更新+1
publicboolIncViewCount(intiLtId,intiInc)
{
IMongoQueryquery;
query=Query.And(
Query.EQ("LT_ID",iLtId)
);
UpdateBuilderupdate=newUpdateBuilder();
SafeModeResultr=MongoCt.Update(query,update.Inc("LT_ViewCount",iInc));
returnr!=null&&r.Ok;
}
//插入数据
publicboolInsertBatch<T>(IEnumerable<T>document)
{
List<SafeModeResult>result=(List<SafeModeResult>)this.MongoCt.InsertBatch<T>(document);
returnresult!=null&&result[0]!=null&&result[0].Ok;
}
//根据ID删除数据
publicboolRemoveBatchById(List<int>list)
{
IMongoQueryquery=null;
query=Query.And(
Query.In("IA_ID",BsonArray.Create(list))
);
SafeModeResultresult=this.MongoCt.Remove(query);
returnresult!=null&&result.Ok;
}
//根据ID更新数据
publicboolUpdateSingleByLtid(InfoModelmodel)
{
IMongoQueryquery;
query=Query.And(
Query.EQ("IA_ID",model.IA_ID)
);
BsonDocumentbsonDocument=model.ToBsonDocument<InfoModel>();
bsonDocument.Remove("_id");
bsonDocument.Remove("IA_ID");
varupdate=newUpdateDocument
{
{"$set",bsonDocument}
};
SafeModeResultresult=this.MongoCt.Update(query,update);
returnresult!=null&&result.Ok;
}
//删除所有数据
publicboolRemoveAll()
{
SafeModeResultr=this.MongoCt.Remove(null);
returnr!=null&&r.Ok;
}
//创建索引
publicboolCreateIndex1()
{
SafeModeResultr=this.MongoCt.CreateIndex(
newIndexKeysBuilder().Ascending("IA_CityCode","IT_Key").Descending("IA_CreateDate")
);
returnr!=null&&r.Ok;
}
//获取表索引
publicGetIndexesResultGetIndex()
{
returnthis.MongoCt.GetIndexes();
}
//删除表索引
publicboolDropIndex()
{
returnthis.MongoCt.DropAllIndexes().Ok;
}
3.命令行下语法
db.collection.update(criteria,objNew,upsert,multi)
criteria:update的查询条件,类似sqlupdate查询内where后面的
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sqlupdate查询内set后面的
upsert:这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi:mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
//用法:{$inc:{field:value}}
//意思对一个数字字段field增加value,如SQL-“updatetest0setcount=count+1where_id=15”
db.test0.update({"_id":15},{$inc:{"count":1}});
//用法:{$unset:{field:1}}
//顾名思义,就是删除字段了,删除某条件下的文档中的某个列,如:
db.test0.update({"_id":15},{$unset:{"Age":1}});
//添加字段赋值
db.test0.find().forEach(
function(item){
db.test0.update({},{"$set":{"CreateDate":item.UpdateDate}},false,true)
}
)
db.test0.find({CityCode:"hz","CreateDate":{$exists:false}}).forEach(
function(item){
db.test0.update({CityCode:"hz","CreateDate":{$exists:false}},{"$set":{"CreateDate":item.UpdateDate}},false,true)
}
)
//查询指定字段
db.test0.find({},{"CreateDate":1,_id:0})
//查找不存在字段FName的记录
db.test0.find({CityCode:"hz","FName":{$exists:false}})
//创建索引
db.test0.ensureIndex({"CityCode":1,"LT_ID":-1},{"name":"test0ByLtId"})
//删除索引
db.runCommand({deleteIndexes:"表名",index:"索引名"})//删除指定索引
db.test0.dropIndexes()//删除所有索引
//查看索引
db.test0.getIndexes()
//列重命名
db.test0.update({},{$rename:{"BigTypeName":"ParentTypeName"}},false,true)
db.test0.remove({});//删除things中的所有数据
db.test0.remove({n:1});//删除things中n=1的所有数据类似deletewheren=1
//链接字符串
Servers=IP:27017;ConnectTimeout=30000;ConnectionLifetime=300000;MinimumPoolSize=8;MaximumPoolSize=256;Pooled=true
本文内容总结:
原文链接:https://www.cnblogs.com/vnii/archive/2012/08/23/2652891.html