2015-10-06 40 views

回答

0

这是否符合您的要求?

public ObservableCollection<BsonType> GetFieldTypes(IMongoCollection<BsonDocument> collection) 
{ 
    ObservableCollection<BsonType> fieldTypes = new ObservableCollection<BsonType>(); 

    var filter = Builders<BsonDocument>.Filter.Exists("_id", true); 
    var findTask = collection.Find<BsonDocument>(filter).FirstOrDefaultAsync(); 
    findTask.Wait(); 

    findTask.Result.Elements.Select(e => e.Value.BsonType).ToList().ForEach(b => fieldTypes.Add(b)); 
    return fieldTypes; 
} 

如果你需要MongoDB中的所有类型,我认为下面的代码可以工作。

public ObservableCollection<BsonType> GetAllFieldTypes(MongoClient client) 
{ 
    var taskListDB = client.ListDatabasesAsync(); 
    taskListDB.Wait(); 
    ObservableCollection<BsonType> allfieldTypes = new ObservableCollection<BsonType>(); 
    bool end = false; 
    do 
    { 
     var taskMoveNext = taskListDB.Result.MoveNextAsync(); 
     taskMoveNext.Wait(); 

     allfieldTypes.AsEnumerable<BsonType>().ToList().AddRange(taskListDB.Result.Current.FirstOrDefault().Elements.Select(e => e.Value.BsonType).ToList()); 

     end = taskMoveNext.Result; 
    } while (end); 

    return allfieldTypes; 
} 
+0

对不起,也许我不明白你的代码。我需要MongoDb中的所有预定义字段类型。现在 - 我用一个文档创建了“技术”集合,这些文档包含各种类型的文件。但在我看来,这不是一个正确的决定。所以,我需要集合而不是字段名称,但字段类型。 –

+0

好吧,我误解了一些东西。 我已更改我的答案以获取ObservableCollection中的所有字段类型。我想你可能想使用BsonType列表。 – jhmt

+0

它是否获取MongoDb中的所有现有字段类型或仅从我的集合中获取? –

相关问题