2012-04-28 6 views
1

컬렉션에있는 모든 개체와 관련된 채워지지 않은 키가있는 MongoDb 컬렉션이 있습니다. 이러한 키가 채워지지 않은 모든 개체를 찾는 쿼리를 수행하려고합니다.MongoDb에 key = null 또는 exists = false를 쿼리하는 것이 더 효율적입니까?

는 항상 객체의 키를 포함하고 단지 널 (null)로 채우기

  • 더 나은겠습니까? 이 {'x' : 'banana'}

나는 내가 어느 쪽이든 원하는 결과를 조회 할 수 있음을 이해 관련이없는 때 {'x' : 'banana', 'y' : null} 또는

  • 난 그냥 "최고 간주되는 궁금하네요, (here 참조) 키를 포함하지 마십시오 연습 "과 왜.

    컬렉션에는 약 10 개의 "필수"필드와 3 개의 "선택적"필드가 있습니다 (관련이있는 경우).

  • 답변

    1

    이 컬렉션의 문서로 수행하는 앱의 의미에 따라 달라집니다. y: null을 저장하지 않아도 공간을 절약 할 수 있습니다. y: null을 저장하는 경우 y이 기술적으로 존재하므로 특정 방법으로 null을 쿼리해야 함을 기억해야합니다. Mongo 위의 레이어가 신경 쓰지 않는다면 @Derick이 권장하는 것과 같이 빈 필드를 저장하지 않기로했습니다. 그러나 걱정하지 않으면 y에서 null으로 더 쉽게 작업 할 수 있습니다.

    업데이트 효과에 대한 질문이 있으십니까? 당신이 모든 것을 제대로하고 있다면 RAM에서 데이터 세트가 잘 작동하는지 확인하십시오. 그 말로는, 나는 당신이 y에 의해 색인을 붙이지 않는 한 두 가지 방법 모두에서 눈에 띄는 차이가 있다고 생각하지 않습니다. 이 경우 동작이 다를 수 있지만 가장 좋은 방법은 몇 가지 테스트를 실행하는 것입니다.

    1

    빈 필드를 저장하지 않기로했습니다. 그러나이 컬렉션에서 실행할 쿼리의 종류에 따라 약간 다릅니다. 당신이 그것에 대해 정교 할 수 있다면, 나는 대답을 업데이트 할 것이다.

    관련 문제