MongoDB学习之--增删改查(1)
2013-09-10 16:53 JerremyZhang 阅读(1598) 评论(1) 编辑 收藏 举报本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动)
1.增
增加操作是最简单的,构造bsonDcument插入即可:
方式1,直接构造:
MongoServer dbserver = new MongoClient(connectionStr).GetServer(); MongoDatabase db = dbserver.GetDatabase(dbName); MongoCollection collection = db.GetCollection(collectionName); dbserver.Connect(); BsonDocument doc = new BsonDocument(); doc["Age"] = Int32.Parse(txt_Age.Text); doc["Name"] = txt_Name.Text; doc["Num"] = txt_Num.Text; doc["Introduction"] = txt_Introduction.Text; collection.Insert(doc);
方式2,通过实体构造:
1 var student = new Student 2 { 3 Age = Int32.Parse(txt_Age.Text), 4 Name = txt_Name.Text, 5 Num = txt_Num.Text, 6 Introduction = txt_Introduction.Text 7 }; 8 9 collection.Insert<Student>(student);
2.删
关键就是构造删除条件,通过api查到Remove方法的签名:public virtual WriteConcernResult Remove(IMongoQuery query);在网上看到好多写法都是在Remove中传入BsonDocument对象,但是我查源码发现bsonDocument根本没有实现IMongoQuery接口,实现这个接口的是一个叫做QueryDocument的类,同时QueryDocument也继承了BsonDocument对象,而构造BsonDocument和QueryDocument的方式超级多,各种方便,简单写几种:
比如构造如下条件,delete from table where Age>15 &Age<20;
相应的mongodb条件写法:{Age:{$gt:15,$lt:20}},下面就来构造这个条件;
方式1,直接通过bsonDocument构造:
BsonDocument doc = new BsonDocument
{ { "Age",new BsonDocument{{"$gte",10},{"$lte",15}}} };
方式2,直接通过QueryDocument构造:与1类似
1 QueryDocument query = new QueryDocument 2 { 3 { "Age",new QueryDocument{{"$gte",10},{"$lte",15}}} 4 };
方式3,直接通过反序列化json字符串:
1 string json = "{ Age:{$gte:10,$lte:15}}"; 2 var queryJson = BsonSerializer.Deserialize(json, typeof(BsonDocument)) as BsonDocument;
个人觉得这种方式挺好,如果你mongodb命令熟悉,这种方式挺适合构造复杂条件的
方式4:通过Query类,Query是静态类,封装了各种逻辑条件方法,有泛型和泛型两种方式:
1 var query1 = Query.GT("Age", 10);//大于10;greater than 10 2 var query2 = Query.LT("Age", 15);//小于15;less than 15 3 var query = Query.And(query1, query2);
但是更好的要数泛型方式了:
var query1 = Query<Student>.GTE<Int32>(t => t.Age, 10); var query2 = Query<Student>.LTE<Int32>(t => t.Age, 15); //var query = Query.And(Query.GTE("Age", 10), Query.LTE("Age", 15)); var query = Query.And(query1, query2);
最后执行Remove方法即可;
3.查
数据显示是必不可少的,查询操作中的条件过滤在删除中已说过,不再赘述,这里先写两种方式(ps:现在了解太浅,只能以笔记形式记录下)
方式1:通过FindAllAs方式或者FindAs方法
1 var query1 = Query<Student>.GTE<Int32>(t => t.Age, 10); 2 var query2 = Query<Student>.LTE<Int32>(t => t.Age, 15); 3 var query = Query.And(query1, query2); 4 5 var list = collection.FindAs(typeof(Student), query);
方式2:通过linq
1 var qList = (from c in collection.AsQueryable<Student>() 2 where c.Age > 10 && c.Age < 15 3 select c).ToList();
先待续吧,今天就这么多
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· Supergateway:MCP服务器的远程调试与集成工具