를 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를에서 아이디 목록을로드에게이 다음 나는 데이터와 새로운 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)
);
}
부 내 코드가 작동하지 않는 것처럼 보입니다. 내가 당신의 이전 게시물 대답 때문에 내가 여기에 약간의 이점을 가지고
만약 내가 제대로 이해하고, 결과는 같을 것이다 "{... Watchtbl : [{...}, {...} {...},]} "을 가진 새로운 문서. 이 경우 UserWatchtbl 크기가 변경된 것보다 커야합니다 (모자라기 쉬운 컬렉션에서는 [불가능] (https://docs.mongodb.com/manual/core/capped-collections/)). db.createCollection ("UserWatchtbl", {capped : false})와 함께 컬렉션을 다시 만드십시오. –
ntohl
네, 캡슐 처리되지 않은 다른 콜렉션으로 테스트하고 작동합니다 : D – Juste3alfaz