[MONGODB] 몽구스 고유의 객체 중첩 배열의 값
MONGODB몽구스 고유의 객체 중첩 배열의 값
내 프로젝트의 경우,이 같은 조직의 그룹에 대한 몽구스 문서를 유지하려면 :
var groupSchema = Schema({
name : { type : String },
org : { type : Schema.Types.ObjectId, ref : 'Organization' },
...
users : [{
uid : { type : Schema.Types.ObjectId, ref : 'User' },
...
}]
});
나는 두 번 같은 그룹에있는에서 동일한 사용자를 방지 할 수 있습니다. 이렇게하려면, 나는 사용자의 배열에서 고유 할 users.uid 강제 할 필요가있다. 나는 독특한 : 사실 '라는 시도 UID에 대한,하지만 작동하지 않았다. 추가 쿼리 또는 분할하지 않고 몽구스 또는 MongoDB를 사용하여 스키마를이 할 수있는 방법이 있나요?
편집하다: 나는에 UID의 이전 값을 변경 UID : {유형 : Schema.Types.ObjectId, REF '사용자', 인덱스 : {독특한 : 사실, dropDups : TRUE}} 그러나 이것은 여전히 작동하지 않습니다.
편집 : 사용자가 이미 그룹의 경우이를 달성하기 위해 간단한 방법이없는 가정, 나는 여분의 질의 검사를 추가했다. 이것은 가장 간단한 방법은 나에게 보인다.
해결법
-
==============================
1.같은 값이 컬렉션에 더 이상의 문서의 배열에 나타나지 않을 수 있지만, 하나의 문서의 배열에 두 번 이상 나타나는 동일한 값을 방지하지 않는 배열 필드의 강제 시행에 고유 인덱스입니다. 당신은 당신이 대신 배열에 요소를 추가로 고유성 확인해야합니다 그래서.
같은 값이 컬렉션에 더 이상의 문서의 배열에 나타나지 않을 수 있지만, 하나의 문서의 배열에 두 번 이상 나타나는 동일한 값을 방지하지 않는 배열 필드의 강제 시행에 고유 인덱스입니다. 당신은 당신이 대신 배열에 요소를 추가로 고유성 확인해야합니다 그래서.
값이 존재하지 않는 경우에만 배열에 값을 추가하기 위해 $ addToSet 연산자를 사용합니다.
Group.update({name: 'admin'}, {$addToSet: {users: userOid}}, ...
사용자의 어레이는 여러 특성을 가진 개체를 포함하고 고유성 확인하려는 경우에는 이상 그 중 하나 (이 경우 UID)의, 당신은 다른 접근을해야합니다
var user = { uid: userOid, ... }; Group.update( {name: 'admin', 'users.uid': {$ne: user.uid}}, {$push: {users: user}}, function(err, numAffected) { ... });
무슨하는 일은 user.uid 이미 사용자의 요소 중의 UID 필드에 존재하지 않는 경우에만 발생하도록 $ 푸시 업데이트를받을 수 있습니다. 그것을 모방 $ addToSet 동작하지만, 단지 UID에 대한 그래서.
-
==============================
2.그런데이 오래된 질문이 될 수도 있지만 몽구스> 버전 4.1를 들어, $ addToSet 연산자를 사용할 수 있습니다.
그런데이 오래된 질문이 될 수도 있지만 몽구스> 버전 4.1를 들어, $ addToSet 연산자를 사용할 수 있습니다.
예:
MyModal.update( { _id: 1 }, { $addToSet: {letters: [ "c", "d" ] } } )
from https://stackoverflow.com/questions/15921700/mongoose-unique-values-in-nested-array-of-objects by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를이 - 중첩 된 배열에서 객체를 업데이트 (0) | 2019.12.04 |
---|---|
[MONGODB] 별개의 기록 값을 가져옵니다 (0) | 2019.12.04 |
[MONGODB] MongoDB의에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2019.12.04 |
[MONGODB] MongoDB의 필드 순서 및 문서 위치 변경 갱신 후 (0) | 2019.12.04 |
[MONGODB] 유성의 평균 집계 쿼리 (0) | 2019.12.04 |