2014-03-25 2 views
0

텍스트 검색 쿼리를 기반으로 '목록'이라는 제목의 포함 된 문서 만 반환하고 싶습니다. 어디에서 잘못 될 수 있습니까? 색인 생성? db.Collection.ensureIndex : 여기 색인 검색은 모든 하위 문서를 반환합니다.

내 인덱스 ({ "Listings.Title": "텍스트", "Listings.Description": "텍스트"}, {이름 : "검색"})

이것은 전체 객체를 반환하며 목록 만 필요합니다. db.AspNetUsers.runCommand ("text", {search : "lawn"})

이것은 목록을 반환하지만 모든 목록이 포함됩니다. 예를 들어 검색 기준에 기반한 목록이 아닙니다. 당신은 단지를 얻을 수

{ 
    "_id" : , 
    "UserName" : "", 
    "PasswordHash" : "", 
    "SecurityStamp" : "", 
    "Roles" : [], 
    "Claims" : [], 
    "Logins" : [], 
    "ProfileData" : { 
    "BirthDate" : new Date("3/8/1974 00:00:00"), 
    "FirstName" : "", 
    "LastName" : "", 
    "MiddleName" : "", 
    "Address" : "", 
    "Address1" : , 
    "City" : "", 
    "State" : "", 
    "PostalCode" : "", 
    "CellPhone" : "", 
    "HomePhone" : "", 
    "Location" : { 
     "type" : "Point", 
     "coordinates" : [, ] 
    } 
    }, 
    "Email" : "", 
    "ConfirmationToken" : "Confirmed", 
    "IsConfirmed" : true, 
    "Listings" : [{ 
     "_id" : ObjectId("5331ac28a5eabf2854085df5"), 
     "UserId" : ObjectId("5329b43fa5eabf0548490c27"), 
     "Title" : "Lawn Chairs", 
     "Description" : "lawn chairs", 
     "Pictures" : ["5331ac28a5eabf2854085df6", "5331ac28a5eabf2854085df7", "5331ac28a5eabf2854085df8"], 
     "Category" : { 
     "_id" : ObjectId("53273ce37dd6c71e1859ab77"), 
     "Title" : "Leisure" 
     } 
    }, { 
     "_id" : ObjectId("5331ac50a5eabf2854085df9"), 
     "UserId" : ObjectId("5329b43fa5eabf0548490c27"), 
     "Title" : "Lawn Ornaments", 
     "Description" : "lawn ornaments troll frog gnome", 
     "Pictures" : ["5331ac50a5eabf2854085dfa", "5331ac50a5eabf2854085dfb", "5331ac51a5eabf2854085dfc"], 
     "Category" : { 
     "_id" : ObjectId("53273cd57dd6c71e1859ab76"), 
     "Title" : "Home" 
     } 
    }, { 
     "_id" : ObjectId("5331ac71a5eabf2854085dfd"), 
     "UserId" : ObjectId("5329b43fa5eabf0548490c27"), 
     "Title" : "Cell Phone", 
     "Description" : "Samsung Galaxy S4", 
     "Pictures" : ["5331ac71a5eabf2854085dfe", "5331ac71a5eabf2854085dff", "5331ac72a5eabf2854085e00"], 
     "Category" : { 
     "_id" : ObjectId("53273cd57dd6c71e1859ab76"), 
     "Title" : "Home" 
     } 
    }] 
} 

답변

0

여기

가 내 객체 '잔디' db.AspNetUsers.runCommand ("텍스트", {1} 검색 : "잔디"프로젝트 : {목록}) 입력란에 project 매개 변수를 사용하십시오. 단지 Listings 요소를 얻기 위해, 당신은 시도 할 수 :

db.AspNetUsers.runCommand("text", {search:"lawn", project:{_id:0, Listings:1}}) 

편집 :

텍스트 명령은 검색어가 포함 된 모든 문서를 반환합니다. 전체 문서를 볼 수 있습니다. 문서 안의 배열을 더 필터링하려면 투영 연산자를 $regex과 함께 사용할 수 있습니다. 예 :

+0

답장을 보내 주지만 이미 시도한 바 있지만 검색 기준 만 포함하는 목록이 아니라 모든 목록을 반환합니다. – Jake

+0

배열의 내용을 제한하는 접근 방식으로 게시물을 업데이트했습니다. 희망이 도움이됩니다. –

+0

다시 한 번 감사드립니다! 나는 이것을 시험 할 것이다. – Jake

관련 문제