繁体   English   中英

C#中的MongoDb投影

[英]MongoDb Projection in C#

namespace mongodbconnect
{
    public class Book
    {
        public int _id { get; set; }
        public string name { get; set; }
    }
    class Program
    {

        static void Main(string[] args)
        {
            var mongoDbClient = new MongoClient();
            var mydb = mongoDbClient.GetDatabase("mydb");
            var CBook = mydb.GetCollection<Book>("Book");    
            var x = CBook.Find(new BsonDocument()).Project(Builders<Book>.Projection.Include("name").Exclude("_id")).ToList();

            foreach(Book b in x)
            {

                Console.WriteLine(b._id);
                Console.WriteLine(b.name);
            }




            Console.WriteLine("End");
            Console.ReadLine();
         }
    }
}

foreach循环显示错误,因为无法将MongoDb.Bson.BsonDocument类型转换为mongodbconnect.Book。 我应该改变什么?

您可以使用BsonSerializer类将自定义投影的结果BsonDocument转换为Book类。 由于_id是整数,因此在C#中,您将获得int的默认值0

var CBook = mydb.GetCollection<Book>("book");
var x = CBook.Find<Book>(FilterDefinition<Book>.Empty)
             .Project(Builders<Book>.Projection.Exclude(book => book._id))
             .ToList()
             .Select(bson => BsonSerializer.Deserialize<Book>(bson));

这个作品

       var x = CBook.Find(new 
        BsonDocument()).Project(Builders<Book>.Projection
       .Include("name").Exclude("_id")).ToList();


        foreach (BsonDocument b in x)
        {
            Console.WriteLine(BsonSerializer.Deserialize<Bookname>(b).name);

        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM