MongoDB C# 驱动程序 字段投影

Shi*_*ner 2 c# database mongodb nosql

您好,我在 mongoDB 中有一个集合,我只想从中获取部分字段,我创建了一个类,将数据插入到 Mongo

班级代码:

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; }


}
Run Code Online (Sandbox Code Playgroud)

这是插入代码:

               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);
Run Code Online (Sandbox Code Playgroud)

**现在我使用此代码从集合中获取所有字段,但我想将 Frame 字段保留在类之外,我尝试构建没有此字段的不同类,但我不知道如何不接收 Frame场地 **

                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();
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

pro*_*r79 6

请看这个:

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

其中 FrameDocumentNoFrameField 是没有 Frame 字段的类

来源在这里