从MongoDB向List中插入collection
本文关键字:插入 collection List MongoDB | 更新日期: 2023-09-27 18:06:24
我尝试使用c#驱动程序从收集到MongoDB服务器的所有数据。这个想法是连接到服务器并获取所有集合,然后插入到类列表中。
List<WatchTblCls> wts;
List<UserCls> users;
List<SymboleCls> syms;
public WatchTbl()
{
InitializeComponent();
wts = new List<WatchTblCls>();
users = new List<UserCls>();
syms = new List<SymboleCls>();
}
public async void getAllData()
{
client = new MongoClient("mongodb://servername:27017");
database = client.GetDatabase("WatchTblDB");
collectionWatchtbl = database.GetCollection<WatchTbl>("Watchtbl");
collectionUser = database.GetCollection<UserCls>("Users");
collectionSymbole = database.GetCollection<SymboleCls>("Users");
var filter = new BsonDocument();
using (var cursor = await collectionWatchtbl.FindAsync(filter))
{
while (await cursor.MoveNextAsync())
{
var batch = cursor.Current;
foreach (var document in batch)
{
wts.Add(new WatchTblCls(document["_id"], document["userId"], document["wid"], document["name"], document["Symboles"]));
}
}
}
}
我在
下得到这个错误wts.Add(new WatchTblCls(document["_id"], document["userId"], document["wid"], document["name"], document["Symboles"]));
不能用[]对'WatchTbl'类型的表达式应用索引
我不明白同时使用WatchTbl
和WatchTblCls
的原因。WatchTblCls
是这里的实体WatchTbl
的模型吗?我不确定。
无论如何。如果要进行聚合,并希望将WatchTbl
集合转换为WatchTblCls
列表,则所需的解决方案可能如下所示。我不知道类的定义,所以我假设:
var client = new MongoClient("mongodb://servername:27017");
var database = client.GetDatabase("WatchTblDB");
var collectionWatchtbl = database.GetCollection<WatchTbl>("Watchtbl");
var collectionUser = database.GetCollection<UserCls>("Users");
var collectionSymbole = database.GetCollection<SymboleCls>("Users");
var list = collectionWatchtbl.AsQueryable().Select(x => new WatchTblCls() {
id = x.id,
userId = x.userId,
.....
});
如果您可以使用相同的WatchTbl
类,并且仍然希望将完整集合加载到本地列表(这绝对不是一个好主意):
List<WatchTbl> list = await collectionWatchtbl.Find(x => true).ToListAsync();