我有這個集合找回ID和插入BsonArray到集合的MongoDB
db.UserWatchtbl.insert({
fbId: "",
Name: "user3",
pass: "pass3",
Watchtbl:
[
{
wid: "1350",
name: "bought stock1",
Symboles: [ { Name: "AAA" }, { Name: "BSI" } ]
},
{
wid: "1350",
name: "bought stock2",
Symboles: [ { Name: "AAA" }, { Name: "BSI" }, { Name: "EXXI" } ]
},
{
wid: "1350",
name: "bought stock2",
Symboles: [ { Name: "AAA" }, { Name: "BSI" }, { Name: "EXXI" } ]
}
]
})
我的形式加載從MongoDB的ID列表,然後我選擇,我要與數據插入新WatchTbl的ID。 而我試圖找到一個Id然後我插入到他們的數據的Watchtbl。
private async void button1_Click(object sender, EventArgs e)
{
// add user into datagridview from MongoDB Colelction Watchtbl
var client = new MongoClient("mongodb://dataservername:27017");
var database = client.GetDatabase("WatchTblDB");
var collectionWatchtbl = database.GetCollection<BsonDocument>("UserWatchtbl");
var document = new BsonDocument();
BsonArray arrSym = new BsonArray();
BsonArray arrWatc = new BsonArray();
document.Add("wid", WIDTextBox.Text.ToString());
document.Add("name", NameComboBox.SelectedItem.ToString());
foreach (var item in SymbolesListBox.SelectedItems)
{
arrSym.Add(new BsonDocument("Name", item.ToString()));
}
document.Add("Symboles", arrSym);
arrWatc.Add(new BsonDocument("Watchtbl", document));
var result = await collectionWatchtbl.FindOneAndUpdateAsync(
Builders<BsonDocument>.Filter.Eq("_id", UsersComboBox.SelectedItem.ToString()),
Builders<BsonDocument>.Update.Set("Watchtbl", arrWatc)
);
}
Bu它看起來我的代碼不工作,所以幫助嗎?
更新 添加再用ntohl的 我面對這個問題的代碼後,當我嘗試插入收集
如果我理解正確的話,結果將看起來像「{... Watchtbl:[{...},{...}, {...},]}「的新文件。如果是這種情況,那麼UserWatchtbl更改大小,這在封頂集合中是[不可能](https://docs.mongodb.com/manual/core/capped-collections/)。請使用db.createCollection(「UserWatchtbl」,{capped:false}) –
ntohl
重新創建集合,就是這樣,我用另一個集合測試不封頂,它的工作原理:D – Juste3alfaz