MongoDB 之 Find查询

it2022-06-26  90

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<ISODate("2011-09-05T13:57:21.812Z") { "_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<TDocument>()是一个泛型方法,可以用原生态BsonDocument和自定义类型News作为类型参数。MongoCursor<TDocument> FindAs<TDocument>(IMongoQuery query) 泛型查找,MongoCursor FindAs(Type, IMongoQuery)指定Type类型,并且两个方法都返回游标。而且MongoDB也提供Linq的查询操作。 MongoDB 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 < BsonDocument >  allDoc  =  coll.FindAllAs < BsonDocument > (); 10  BsonDocument doc  =  allDoc.First();  // BsonDocument类型参数 11  12  MongoCursor < News >  allNews  =  coll.FindAllAs < News > (); 13  News aNew  =  allNews.First();  // News类型参数 14  15  News firstNews  =  coll.FindOneAs < News > ();  // 查找第一个文档 16  17  QueryDocument query  =   new  QueryDocument();  // 定义查询文档 18  query.Add( " _id " 10001 ); 19  query.Add( " count " 1 ); 20  MongoCursor < News >  qNews  =  coll.FindAs < News > (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 < News >  mNewss  =  coll.FindAs < News > (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 < News >  mNews  =  coll.FindAs < News > (qd_3); //

如果要看更多,请访问我之前的 MongoDb系列文章 作者: Yoolo 出处: http://www.cnblogs.com/yoolonet/archive/2011/09/06/2168447.html

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 

转载于:https://www.cnblogs.com/yoolonet/archive/2011/09/06/2168447.html

相关资源:数据结构—成绩单生成器

最新回复(0)