2016-08-11 3 views
2

Привет У меня есть коллекция в MongoDB, что я хочу, чтобы получить только часть полей из нее, я создал класс, который я вставляя данные с в МонгоMongoDB C# Драйвер проекции полей

ClassCode:

public class FrameDocument 
{ 

    public ObjectId _id { get; set; } 
    public Nullable<System.DateTime> FrameTimeStamp { get; set; } 
    public Nullable<int> ActivePick { get; set; } 
    public Nullable<int> TraderId { get; set; } 
    public Nullable<int> EventCodeId { get; set; } 
    public byte[] Frame { get; set; } 
    public int ServerUserId { get; set; } 
    public int SesionId { get; set; } 
    public string TraderName { get; set; } 
    public string ServerUserName { get; set; } 


} 

Это код вставки:

   FrameDocument frameDoc = new FrameDocument(); 

      frameDoc.Frame = imageBA; 
      frameDoc.EventCodeId = 1; 
      frameDoc.SesionId = 1; 
      frameDoc.FrameTimeStamp = DateTime.Now; 
      frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"]; 
      frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"]; 
      frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"]; 
      frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"]; 
      frameDoc.ServerUserName = (string)toMongoDt.Rows[0] ["ServerUserName"]; 
      var mongoCon = "mongodb://127.0.0.1"; 
      MongoClient client = new MongoClient(mongoCon); 
      var db = client.GetDatabase("Video"); 

      var frameCollection = db.GetCollection<FrameDocument>("Frame"); 
      frameCollection.InsertOne(frameDoc); 

** на данный момент я получаю все поля из коллекции с этим кодом, но я хочу leav е поле Кадр из класса, я попытался построить другой класс без этого поля, но я не знаю, как не получить поле кадра **

   var collection = db.GetCollection<BsonDocument>("Frame"); 
      var builder = Builders<BsonDocument>.Filter; 
      var filter = builder.Eq("SesionId", 1) 
       & builder.Eq("TraderId", 125) 
       & builder.Eq("ServerUserId", 1) 
       & builder.Lt("FrameTimeStamp", sing.eDate) 
       & builder.Gt("FrameTimeStamp", sing.sDate); 

      var result = collection.Find(filter).ToList(); 

Может кто-нибудь помочь?

ответ

1

см это:

_result = _collection.Find(o => o._id == _id) 
      .Project<FrameDocumentNoFrameField> 
      (Builders<FrameDocument>.Projection.Exclude(f => f.Frame)).ToList(); 

где FrameDocumentNoFrameField является класс без ярма

source here

+0

Работает очень хорошо !!! –

Смежные вопросы