나는 멱등 원을 만들고 싶다는 REST API를 작성 중입니다. 나는 중첩 된 배열과 멱등 원과 함께 지금 고심하고있다. 하나의 원자 적 조작으로 product_notes
배열의 항목을 업데이트하고 싶습니다. MongoDB에서 가능합니까? 또는 객체 대신 배열을 저장해야합니까 (이 게시물의 끝 부분에있는 예를 참조하십시오)? 예를 들어 upsert
동작을 모방하는 것이 가능하지만 배열을 모방 할 수 있습니까?MongoDB 중첩 배열의 멱등 원? 가능합니까?
{
username: "test01",
product_notes: [
{ product_id: ObjectID("123"), note: "My comment!" },
{ product_id: ObjectID("124"), note: "My other comment" } ]
}
난 그냥 업데이트 명령과 $set
하지만 무엇 product_id
아직 배열에없는 경우를 사용하여 기존 product_node에 대한 메모를 업데이트합니다. 그렇다면 upsert
을하고 싶습니다만, (필자가 아는 한) 임베디드 문서/배열 연산자의 일부가 아닙니다.
이 문제를 해결하고 멱등수가되도록하는 한 가지 방법은 product_id
과 username
사이에 새 컬렉션 product_notes
을 추가하는 것입니다. 이것은 문서 기반 데이터베이스의 목적을 위반하는 것처럼 느껴집니다.
또 다른 해결책이에 대해 아무것도 나보다 더 경험이 조금 공유 할 수
{
username: "test01",
product_notes: {
"123": { product_id: ObjectID("123"), note: "My comment!" },
"124": { product_id: ObjectID("124"), note: "My other comment" } }
}
누구?
사용자는 몇 개의 댓글을 저장할 수 있습니까? 몽고 버전? – profesor79
나는 당신이 무엇을 목표로하고 있는지 알고 있다고 생각합니다. 그러나 스키마 디자인을 염두에 두지 말고 스키마를 모델링하는 올바른 방법인지는 모릅니다. 10 ~ 100 개 제품이 될 것이라고 생각합니다. 표시된 코드는 정확한 프로젝트가 아니라 문제가있는 곳의 예입니다. 나는 이미 자체 컬렉션에서 product_notes로 솔루션을 만들었으며 ... 잘 작동합니다. –