2016-12-07 3 views
0

MongoDB에서 다음 쿼리를 사용하려고합니다.
1) db.products.createIndex ({name : "text", category.name ': "text"})
이렇게하면 색인이 생성됩니다. 2)

지금 내 쿼리
db.products.find입니다 ({$ 텍스트 : {$ 검색 : "일 달 태피스트리"}}이 태양, 달, 그리고 태피스트리에 따라 데이터를 가져올 것이다
).

3)하지만이 같은 데이터를 가져오고 싶습니다.
          a) 먼저 exect 매치에서 모든 데이터 행 일 달 태피스트리는
          b)는 그 일, 달 후에 태피스트리는 (

를 보여줄 것이다 참고 : DB 호출은 한 번만 수행해야합니다.)

답변

1

일치하는 textSco 결과 집합 정렬 재 : 당신이 텍스트 인덱스를 가지고 있기 때문에

db.products 
     .find({ $text : { $search : "Sun moon Tapestry" } }, { score: { $meta: 'textScore' } }) 
     .sort({score:{$meta: "textScore"}}) 

을 당신은 또한 namecategory.name에 대한 가중치를 정의 할 수 있습니다. https://docs.mongodb.com/v3.2/tutorial/control-results-of-text-search/

추신 : 아무 관련 AngularJS와

편집있다 : 당신은 몽구스를 사용하는 경우 쿼리 당신은 당신이 할 수있는 각도 통합을위한 모델을

YourProduct 
     .find({ $text : { $search : "Sun moon Tapestry" } }, { score: { $meta: 'textScore' } }) 
     .sort({score:{$meta: "textScore"}}) 
     .exec(function (err, data) { 
      if (err) 
       res.json(err); 
      else { 
       res.json(data) 
      } 
     }); 

를 조회 할 수 있고, 동일하게 유지 $ http https://docs.angularjs.org/api/ng/service/$http을 사용하는 서비스를 만들고 ajax 호출을하십시오.

+0

위의 결과는 예상과 같습니다. 이것은 내 터미널에서만 작동하며, 결과를 가져 오기 위해 쿼리를 보내는 동안 angularjs에서 발췌 해 줄 수 있습니까? 이것은 정말 인상적입니다. –

+0

제 편집을 참조하십시오. – alfredopacino

+0

네, 아마도이 코드를 어딘가에서 실수로 사용 했었습니다. 단일 DB 호출에서 제품 조건이 너무 많기 때문입니다. 그것은 정교한 코드 구조를 해결할 때 터미널에서 작동합니다. 다시 한 번 감사드립니다 !!. –

관련 문제