2014-09-29 3 views
0

Проблема заключается в «else» части кода, где переменные «поля» получают все указанные поля из документа, но, преобразовывая его в bson и возвращающий bson, я получаю сообщение об ошибке as: не может писать массив на корневом уровне документа bson.Невозможно преобразовать MongoCursor в BsonDocument

public BsonDocument bsonReadDocument(string strDbName, string strCollectionName, IMongoQuery query, string[] includeFields = null) 
    { 
     BsonDocument bsonDoc = null; 
     MongoServer MdbServer = ConnectToServer(); 

      if ((strDbName != "" || strDbName != null) && MdbServer.DatabaseExists(strDbName)) 
      { 
       if ((strCollectionName != "" || strCollectionName != null) && MdbServer.GetDatabase(strDbName.ToLower()).CollectionExists(strCollectionName)) 
       { 
        if (includeFields == null) 
        { 
         bsonDoc = MdbServer.GetDatabase(strDbName.ToLower()).GetCollection(strCollectionName.ToLower()).FindOne(query); 
        } 
        else 
        { 
         var fields = MdbServer.GetDatabase(strDbName.ToLower()).GetCollection(strCollectionName.ToLower()).Find(query).SetFields(Fields.Include(includeFields)); 
        } 
       } 
      } 
     } 
     return bsonDoc; 
    } 

ответ

0

Никогда не возражаете, я понял, решение для «еще» блока кода на моей ниже

MongoDatabase db = MdbServer.GetDatabase(strDbName); 
         MongoCollection<BsonDocument> collection = db.GetCollection(strCollectionName);       

         foreach (var document in collection.Find(query).SetFields(Fields.Include(includeFields).Exclude("_id"))) 
         { 
          foreach (string name in document.Names) 
          { 
           BsonElement element = document.GetElement(name); 
           BsonValue value = document.GetElement(name).Value; 
           bsonDoc.Add(element.Name, value); 
          } 
         } 
Смежные вопросы