0
我正在使用C#驅動程序2.0。我想在我的收藏中添加字段。我如何獲取ObservableCollection中的所有MongoType? o,我的用戶可以輸入新的字段名稱,選擇字段類型 - 我們在這裏。 謝謝!C#驅動程序Mongo:獲取所有現有字段類型
我正在使用C#驅動程序2.0。我想在我的收藏中添加字段。我如何獲取ObservableCollection中的所有MongoType? o,我的用戶可以輸入新的字段名稱,選擇字段類型 - 我們在這裏。 謝謝!C#驅動程序Mongo:獲取所有現有字段類型
這是否符合您的要求?
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;
}
對不起,也許我不明白你的代碼。我需要MongoDb中的所有預定義字段類型。現在 - 我用一個文檔創建了「技術」集合,這些文檔包含各種類型的文件。但在我看來,這不是一個正確的決定。所以,我需要集合而不是字段名稱,但字段類型。 –
好吧,我誤解了一些東西。 我已更改我的答案以獲取ObservableCollection中的所有字段類型。我想你可能想使用BsonType列表。 – jhmt
它是否獲取MongoDb中的所有現有字段類型或僅從我的集合中獲取? –