mongodb,MongoDB 之 Find查询

Find查询是MongoDB中最基本也是最常用的语法。使用起来也非常简单。下面列出了Find的一些基本操作。
> db.news.find() //select * from [news]
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
{ "_id" : 10002, "count" : 2, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:41:57.860Z") }
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
{ "_id" : 10005, "count" : 5, "news" : "new a good day", "time" : ISODate("2011-09-05T13:42:36.860Z") }
> db.news.findOne() //select top 1 * from [news]
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
> db.news.find({"_id":10001,"count":1}) //select * from [news] where _id=10001 and count=1
{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
> db.news.find({"count":{"$gt":2,"$lte":4}}) //select * from [news] where count>2 and count<=4
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
> stime = new Date()
ISODate("2011-09-05T13:57:21.812Z")
> db.news.find({"time":{"$lt":stime}}) //select * from news where time{ "_id" : 10001, "count" : 1, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:40:58.034Z") }
{ "_id" : 10002, "count" : 2, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:41:57.860Z") }
{ "_id" : 10003, "count" : 3, "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "_id" : 10004, "count" : 4, "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
{ "_id" : 10005, "count" : 5, "news" : "new a good day", "time" : ISODate("2011-09-05T13:42:36.860Z") }
> db.news.find({"count":{"$gt":2,"$lte":4}},{"_id":0,"time":1,"news":1}) // select time,news from [news] where count>2 and count<=4
{ "news" : "i hava a dream", "time" : ISODate("2011-09-05T13:42:09.794Z") }
{ "news" : "wow! it is very good!", "time" : ISODate("2011-09-05T13:42:19.185Z") }
下面是对应的C#代码
FindAllAs ()是一个泛型方法,可以用原生态BsonDocument和自定义类型News作为类型参数。MongoCursor FindAs (IMongoQuery query) 泛型查找,MongoCursor FindAs(Type, IMongoQuery)指定Type类型,并且两个方法都返回游标。而且MongoDB也提供Linq的查询操作。
MongoDB 之 Find查询mongodbMongoDB 之 Find查询mongodbMongoDB Find查询 1 public class News 2 { 3 public int _id { get; set; } 4 public int count { get; set; } 5 public string news { get; set; } 6 public DateTime time { get; set; } 7 } 8 9 MongoCursor allDoc = coll.FindAllAs(); 10 BsonDocument doc = allDoc.First(); //BsonDocument类型参数 11 12 MongoCursor allNews = coll.FindAllAs(); 13 News aNew = allNews.First(); //News类型参数 14 15 News firstNews = coll.FindOneAs(); //查找第一个文档 16 17 QueryDocument query = new QueryDocument(); //定义查询文档 18 query.Add("_id", 10001); 19 query.Add("count", 1); 20 MongoCursor qNews = coll.FindAs(query); 21 22 23 BsonDocument bd = new BsonDocument();//定义查询文档 count>2 and count<=4 24 bd.Add("$gt", 2); 25 bd.Add("$lte", 4); 26 QueryDocument query_a = new QueryDocument(); 27 query_a.Add("count",bd); 28 29 FieldsDocument fd = new FieldsDocument(); 30 fd.Add("_id", 0); 31 fd.Add("count", 1); 32 fd.Add("time", 1); 33 34 MongoCursor mNewss = coll.FindAs(query_a).SetFields(fd);//只返回count和time 35 36 var time = BsonDateTime.Create("2011/9/5 23:26:00"); 37 BsonDocument db_t = new BsonDocument(); 38 db_t.Add("$gt", time); 39 QueryDocument qd_3 = new QueryDocument(); 40 qd_3.Add("time", db_t); 41 42 MongoCursor mNews = coll.FindAs(qd_3);//

如果要看更多,请访问我之前的MongoDb系列文章
作者: Yoolo
出处:http://www.cnblogs.com/yoolonet/archive/2011/09/06/2168447.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
Tags: 

延伸阅读

最新评论

发表评论