C#驱动程序Mongo:获取所有现有字段类型

时间:2015-10-06 21:33:52

标签: c# mongodb types field driver

我正在使用C#驱动程序2.0。我想在我的收藏中添加字段。如何在ObservableCollection中获取所有MongoType? o,我的用户可以输入新的字段名称,选择字段类型 - 我们在这里。 谢谢!

1 个答案:

答案 0 :(得分: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;
}