2014-04-28 6 views
1

MongoDB에서 배열의 요소 순서를 쉽게 확인할 수있는 방법이 있습니까? , MongoDB를 = 0, rethinkdb = 1 개 인덱스Mongodb에서 Array 요소의 순서를 확인하는 방법은 무엇입니까?

{ 
    _id: 1, 
    tags: ["mongodb", "rethinkdb", "couchbase", "others"] 
} 

내가 mongodb 올 경우 rethinkdb 여부는 (배열 요소에 볼 수 있습니다 전에 태그 필드를 확인하고 싶습니다 예를 들어 나는이 같은 문서가 그래서 mongodb가 먼저 나오고 우리의 경우는 일치합니다.)? 그러나 mongodb 앞에 rethinkdb이 오는 다른 문서 (아래처럼)가있는 경우 일치하지 않습니다.

{ 
    _id: 2, 
    tags: ["rethinkdb", "mongodb", "couchbase"] 
} 

여기서 mongodb (1)은 rethinkdb (0) 다음에 나오므로 대소 문자가 일치하지 않습니다.

+0

하지 : 당신의 희망은 "MongoDB를"값이 "rethinkdb"값 앞에 오는 있는지 확인하는 것입니다 경우 또는, 당신은 맵리 듀스, 또는 연산자와 같은 동등하게 좋은하지 뭔가 자바 스크립트로 평가해야합니다 네가 실제로 무엇을 의미하는지 너무 확신한다. 실제 사용 사례는 무엇입니까? 어떻게 이것을 비교하고 싶니? 하나 또는 여러 문서에 대해? –

+0

많은 문서가있을 수 있습니다. 제대로 배열되었는지 여부를 확인해야합니다. 우리는 배열의 인덱스/위치를 확인할 수 있지만 어떻게 위치를 얻을 수 있을지 모르겠다. –

+0

질문을 수정하고 아이디어를 펼치십시오. 한 문서를 다른 문서와 비교할 때 어떤 결과가 나올지 아직 모르겠습니다. 문서 1과 문서 2를 비교하는 방법을 아는 것과 마찬가지로, 달성하고자하는 것에 대해 더 잘 설명 할 필요가 있습니다. –

답변

2

귀하의 질문은 당신이 생각하는, 그래서 왜 대답하는 방법은 여러 가지가 있기 때문에 진짜로 명확하지 않다 : 문서가 처음으로 "MongoDB를"을 경우

당신이 알아 단지를 찾는 경우가 배열의 요소는 다음 당신은 다음과 같은 쿼리를 실행 :

db.collection.find({ "tags.0": "mongodb" }) 

그리고는 "점 표기법"을 사용하여 지정된 인덱스 위치에서 주어진 값과 일치 문서 만 반환합니다.

실제로 배열은 다음 몇 가지 집계 파이프 라인의 도움과 MongoDB를 2.6에서 사용할 수있는 다른 기능입니다 설정 운영자 얻을 수있는 "예상 순서"에있는 경우 일치 할 것으로 예상하는 경우 :

db.collection.aggregate([ 
    { "$project": {   
     "$_id": "$$ROOT", 
     "matched": { "$setEquals": [ 
      "$tags", 
      ["mongodb", "rethinkdb", "couchbase", "others"] 
     ]} 
    }}, 
    { "$match": { "matched": true }} 
]) 

db.collection.find({ 
    "$where": function() { 
     return this.tags.indexOf("mongodb") < this.tags.indexOf("rethinkdb"); 
    } 
}) 
관련 문제