如何使用c#从MongoDB中的Views类型集合中获取列

时间:2017-11-28 10:03:47

标签: mongodb mongodb-query aggregation-framework mongodb-.net-driver spring-data-mongodb

如何使用c#

从MongoDB中的Views类型集合中获取列

我正在使用此代码从mongoDB集合中获取列。它可以正常收集但视图类型集合不起作用。 所以我需要来自集合的视图类型的列名。

var client = new MongoClient(Connstr);
var DB = client.GetDatabase(dbname);           
var collection = DB.GetCollection<BsonDocument>(tablename);
var cursor = collection.FindAsync(new 
    BsonDocument()).Result.ToListAsync().Result;        
foreach (BsonDocument document in cursor)
{
    Type type;
    var typestring = Enum.GetName(typeof(BsonType), 
    column.Value.BsonType);
    Columnlist.Add(column.Name);
}

enter image description here

上图&#34; AnalyticsView&#34;是一个视图类型集合。

我使用MongoDb Driver获取列。

1 个答案:

答案 0 :(得分:1)

根据文件:

  

视图是只读的;对视图的写操作将[throw]错误。   以下读取操作可以支持视图:

     
      
  • db.collection.find()
  •   
  • db.collection.findOne()
  •   
  • db.collection.aggregate()
  •   
  • db.collection.count()
  •   
  • db.collection.distinct()
  •   

因此,我创建了一个视图,用于连接employee集合中员工的名字和姓氏。您可以找到视图示例here。然后我在视图的代码中添加了一个类,如下所示(我的视图将有一个属性为Fullname):

public class EmployeeName
{
    [BsonElement("fullname")]
    public string Fullname { get; set; }
}

其余的完成就像这样:

var context = new Context();
var builder = Builders<EmployeeName>.Filter;
var filter = builder.Eq(x => x.Fullname, "John Smith");
var test = context.EmployeeView.Find(filter).SingleOrDefault();