복붙노트

[MONGODB] 어떻게 유성 응용 프로그램에서 MongoDB를에 두 개의 열 고유 ID를 추가 할 수 있습니까?

MONGODB

어떻게 유성 응용 프로그램에서 MongoDB를에 두 개의 열 고유 ID를 추가 할 수 있습니까?

나는 유성 응용 프로그램에서 기본 MongoDB를에 두 개의 열 고유 인덱스를 만들려고하고 문제가 발생하고있다. 나는 유성 문서에서 아무것도 찾을 수 없습니다. 나는 크롬 콘솔에서 노력했다. 나는 용어에서 시도하고 심지어 / DB / 디렉토리 내부 .meteor에서 포인트 mongod에 노력했다. 나는 시도

Collection.ensureIndex ({first_id : 1, another_id : 1}, {독특한는 true}); 변화.

나는 유성 응용 프로그램 몽고 컬렉션 중복 된 항목을 방지 할 수 있어야합니다.

사람이 밖으로을 낸 경우 궁금하십니까?

나는 내 자신의 질문에, 어떤 멍청한 놈 대답했다.

나는 그것을 알아.

그럼 난 엄지 손가락과 thumbsdown 타입 시스템의 기록을 위해 이러한 않았다 예를 들어 색인을 ... 만들 수 있습니다.

db.thumbsup.ensureIndex({item_id: 1, user_id: 1}, {unique: true})
db.thumbsdown.ensureIndex({item_id: 1, user_id: 1}, {unique: true})

이제 부트 스트랩 밖으로 다만 돼 그림은 수동 자극에 푸시 대신 할 때 다음을 만듭니다 설치를 설치합니다.

해결법

  1. ==============================

    1.워드 프로세서에 따르면 "Minimongo 현재 인덱스가 없습니다.이 곧 올 것이다." 그리고 컬렉션에서 사용할 수있는 방법을보고, 더 ensureIndex 없습니다.

    워드 프로세서에 따르면 "Minimongo 현재 인덱스가 없습니다.이 곧 올 것이다." 그리고 컬렉션에서 사용할 수있는 방법을보고, 더 ensureIndex 없습니다.

    당신은 몽고의 쉘 유성 몽고 실행하고 인덱스 서버 측을 가능하게하지만, Collection 개체는 여전히 그들에 대해 알 수 없습니다 수 있습니다. 앱이 서버 측에 추가 삽입이 자동으로 실패하는 동안, 컬렉션 캐시에 여러 인스턴스를 추가 할 수 있도록 (오류 출력에 기록된다). 서버와 하드 페이지 새로 고침을 수행 할 때 앱이됩니다 다시 동기화

    그래서 지금은 가장 좋은 건 같은 것을 할 아마도 :

    var count = MyCollection.find({first_id: 'foo', another_id: 'bar'}).count()
    if (count === 0)
        MyCollection.insert({first_id: 'foo', another_id: 'bar'});
    

    어느 분명히 좋지 않은,하지만 괜찮 작동합니다. 또한 너무도 당신이 실제로 중복 레코드를 얻을 수 없습니다 경쟁 조건의 경우, 서버에 MongoDB를에 색인 가능하게 할 수있다.

  2. ==============================

    2.유성 소스 코드 내에서 검색, 나는 _ensureIndex라는 ensureIndex에 바인드를 발견했다. 단일 키 기본 인덱스의 경우는 패키지 / 계정 기반의 모범을 따를 수 / 유성에 그 힘 고유 한 사용자 이름을 accounts_server.js :

    유성 소스 코드 내에서 검색, 나는 _ensureIndex라는 ensureIndex에 바인드를 발견했다. 단일 키 기본 인덱스의 경우는 패키지 / 계정 기반의 모범을 따를 수 / 유성에 그 힘 고유 한 사용자 이름을 accounts_server.js :

    Meteor.users._ensureIndex('username', {unique: 1, sparse: 1});
    

    멀티 키 "화합물"인덱스 :

    Collection._ensureIndex({first_id:1, another_id:1}, {unique: 1});
    

    앞의 코드는 서버 측에 배치 할 때, 인덱스가 설정되어 것을 보장.

    공지 사항 _ensureIndex 구현 경고 :

  3. ==============================

    3.Smartpackage는 aldeed : collection2 지원하는 유일한 지표뿐만 아니라 스키마 검증을. 검증은 서버와 클라이언트 (reactivly)에 모두 발생 시킬수는, 그래서 당신은 클라이언트의 오류에 반응 할 수 있습니다.

    Smartpackage는 aldeed : collection2 지원하는 유일한 지표뿐만 아니라 스키마 검증을. 검증은 서버와 클라이언트 (reactivly)에 모두 발생 시킬수는, 그래서 당신은 클라이언트의 오류에 반응 할 수 있습니다.

  4. ==============================

    4.사실 왜 Meteor.method로 서버에 upsert 사용하지 당신은 또한 TS로도 전송을 추적 할 수 있습니다 : // 서버 만

    사실 왜 Meteor.method로 서버에 upsert 사용하지 당신은 또한 TS로도 전송을 추적 할 수 있습니다 : // 서버 만

    Meteor.methods({
     add_only_once = function(id1,id2){
       SomeCollection.update(
         {first_id:id1,another_id:id2},{$set:{ts:Date.now()}},{upsert:True});
     }
    });
    

    // 고객

    Meteor.call('add_only_once',doc1._id, doc2._id);
    

    // 실제 코드는 서버에서 실행

    if(Meteor.is_server) {
        Meteor.methods({
            register_code: function (key,monitor) {
                 Codes.update({key:key},{$set:{ts:Date.now()}},{upsert:true});
            }
         ...
    
  5. from https://stackoverflow.com/questions/10167604/how-can-i-add-a-two-column-unique-id-to-the-mongodb-in-a-meteor-app by cc-by-sa and MIT license