MongoDB에 Users
콜렉션에 다음 document
이 있습니다. mycellar
cellar
의 beersInCellar[]
에 <SpecificBeer>
을 삽입하려고합니다. filter
및 update
개체에서 모든 종류의 조합을 시도했지만 중첩 배열에 삽입하는 것만으로는 머리를 감쌀 수 없습니다. 나는 find
document
하는 방법을 알고 그것으로 그 문서의 배열에 물건을 삽입합니다.C# MongoDB에 중첩 배열에 삽입
{
"_id" : ObjectId("5920751b6d4f6a27cf7985a8"),
"name" : "FullName",
"emailAddress" : "[email protected]",
"cellars" : [
{
"cellarId" : "mycellar",
"cellarName" : "My Cellar",
"beersInCellar" : [ ]
}
]
}
SpecificBeer 모델 :
public class SpecificBeer
{
public string ourid
{
get
{
return ID.ToString();
}
set
{
ID = ObjectId.Parse(value);
}
}
[BsonId]
private ObjectId ID {get; set;}
public string year { get; set; }
public string variant { get; set; }
public string quantity { get; set; }
public string numberForTrade { get; set; }
}
삽입 방법 당신은 $positional 연산자를 사용해야
public async Task<SpecificBeer> AddBeerToList(string id, SpecificBeer specificBeer, string cellarId)
{
var filter = Builders<User>.Filter.Eq(e => e.userId, id) & Builders<User>.Filter.Eq(e => e.cellars, cellarId);
var update = Builders<Cellar>.Update.Push<SpecificBeer>(e => e.beersInCellar, specificBeer);
await _collection.FindOneAndUpdateAsync(filter, update);
return specificBeer;
}
와우는 많은 정보였습니다. 정말 고마워요! 아마 내 스키마를 재고 할게. – Jrow