2012-02-14 4 views
0

다른 배열 안에있는 배열에 값을 추가하고 싶습니다. 내 문서는 다음과 같습니다 :

{categories:[{categoryName:"a category", items:[{itemName:"an item", arrayOfValues:[1]}]}]} 

$ addToSet to arrayValues를 사용하고 싶습니다. 내가 쿼리

table.update({"categories.items.itemName" : "anItem"}, {$addToSet: "categories.$.items.$.arrayOfValues":"10"}) 

로 업데이 트를하고있는 중이 야 그렇게하지만 오류가 발생합니다 : 문자열 필드 이름 [$] 내가 잘못

를하고있는 중이 야 무엇을 사용하여 배열에 추가 할 수 없습니다? 중첩 된 배열로 업데이트 할 수 있습니까? 배열 내부

감사

답변

3

배열은 (주로 당신이 $addToSet 친구를 사용하여 효율적으로 조작 할 수 없기 때문에) 지금 나쁜 MongoDB의 디자인 간주됩니다. 그리고 한 걸음 더 나아가 어레이 내부의 배열을 배열 안에 만들었습니다!

스키마가 없으므로 MongoDB가 인 문서를 구조로 던져 나중에 처리 할 수 ​​있다고 생각합니다. 불행히도, 이것은 현실이 아닙니다. 당신은 당신이하고있는 일, 어떤 특징과 한계가 있는지를 알아야합니다. 이 경우 can't use positional operator to push element to a nested array입니다.

+2

hmmm MongoDb는 지금 나에게 덜 강력한 것 같습니다 ... – Matroska

+0

@RemonvanVliet : 내 대답에이 링크가 표시되지 않았습니까? :) –

+0

Woopty, 나는하지 않았다;) –