2016-06-03 6 views
0

MongoDB (몽구스 포함)에 삽입 할 객체/문서의 배열이 많은 경우. 그러나 각 객체에는 먼저 채워야하는 속성이 있습니다. 각 문서에 대해이 속성에 대해 MongoDB를 쿼리하는 것이 빠릅니다. 또는 매번 하나의 큰 배열과 루프를 얻는 것이 좋습니다.MongoDB를 많이 조회하거나 큰 배열을 반복하는 것이 더 낫습니다.

쿼리 및 루프는 매우 간단하며 쿼리 된 문서는 작습니다. 컬렉션 (따라서 배열)에는 약 3000 개의 항목이 있습니다.

Mongos 색인은 어느 시점에서 기본 드라이버 등이 쿼리의 오버 헤드보다 중요합니까?

편집 : 간단한 예가 될 수 있습니다.

다음과 같은 문서 배열이 있습니다.

{ 
    prop1: 'abc', 
    prop2: '123', 
    prop3: '' 
} 

그리고 prop1에 맞게 내가 MongoDB의 쿼리를 할 필요가 prop3의 값

. 이러한 문서는 이와 유사합니다.

약 3000 개의 이러한 두 번째 문서가 있습니다. 내가 질문을 이해 한 경우 그래서 내가 올바르게 당신은 당신이 DB에 삽입 할 필요가 배열이)

1 아래로 뭔가를하고 싶은 그들 또는 루프 배열

+2

일부 샘플 문서 및 의사 코드는 문제의 시각화에 도움이됩니다. – chridam

+1

질문이 너무 광범위합니다. [Minimal, Complete, Verifiable example] (https://stackoverflow.com/help/mcve)를 제공하십시오. – styvane

답변

1

를 조회 않습니다.

var array=[ 
      {foo: "foo", bar:""}, 
      {foo: "foo", bar:""}, 
      {foo: "foo", bar:""} 
      ] 

2) 입력 배열이 완전하지 않습니다. db에 삽입하기 전에 배열의 각 객체에있는 속성 (이 경우 bar) 중 하나에 값을 할당해야합니다.

var array=[ 
       {foo: "foo", bar:"bar"}, 
       {foo: "foo", bar:"bar1"}, 
       {foo: "foo", bar:"bar2"}, 
      ] 

이 상황에서 배열을 반복하는 것은 데이터베이스를 하나씩 액세스하는 것보다 더 나은 선택입니다. db 작업은 루핑보다 비용이 많이 든다는 것을 기억하십시오.

당신은 배열을 통해

1) var array=[//array goes here ]

2) 루프를해야하고 재산

for(//iterate through array){ 
     //assign the property value 
    } 

3) 한 번에 데이터베이스의 업데이트 된 배열을 삽입에 값을 할당합니다.

+0

DB에서 '나쁜'값을 가져와야한다고 생각하므로 쿼리해야하는지 알고 싶습니다. 한 번 또는 네 번. 나는 당신의 대답이 여전히 옳다고 생각합니다. 당신은이 부분을 포착하지 않았습니다. – Paul

관련 문제