코드 http://www.w3resource.com/mongodb/mongodb-elemmatch-projection-operators.php에이어서 ruby mongodb 드라이버를 사용하여 테스트 데이터베이스를 설정했습니다.Ruby Mongo 드라이버 투영 Elemmatch
집에있는 사람들을 위해서는 우선 https://docs.mongodb.com/ecosystem/tutorial/ruby-driver-tutorial/#creating-a-client에 설명 된대로 mongo 드라이버를 설치 한 후 다음 명령을 실행해야합니다.
테스트 클라이언트 = [ '검사']
DOC : = 몽고 :: Client.new (데이터베이스 => 'MYDB를'[ '127.0.0.1:27017'])
클라이언트 = { "_id"=> 1 "배치"=> 10,452, "tran_details"=> [ { "수량"=> 200 "수다"=> 50 "MRP"=> 70 }, { "qty"=> 250, "수다"=> 50 "MRP"=> 60 } { "수량"=> 190 "수다"=> 55 "MRP"=> 75 } ] }
test.insert_one (문서)
삽입 W3 튜토리얼에서 만든 다른 문서의 모든. 당신은 W3 튜토리얼 예 2를 보면
, 번역 루비 발견은 다음과 같습니다.
test.find ({ "배치"=> 10452}) 투사 ({ "tran_details"=> { "$ to_a
이 예에서와 같은 결과를 반환합니다. "elemMatch"=> { "prate"=> { "prate"=> 50, "mrp" {{ "_id"=> 1, "tid_details"=> 200, "prate"=> 50, "mrp"=> 70}]} {{ "_id" => 3}
내 문제는 위의 제약 조건 (mrp gte 70 등)으로 결과를 제한하고 어떤 필드를 반환할지 지정하는 것입니다.
예를 들어, mrp gte 70을 갖는 tran_details만을 제한하지만 리턴 된 결과에는 prate 필드 (또는 필드의 서브 세트) 만 포함됩니다.
나는 쿼리에만 수다 필드를 반환 할 수 있습니다
test.find ({ "배치"=> 10452}) 투사 ({ "tran_details.prate"=> 1}) to_a..
두 가지 다른 예상 효과를 결합하고 싶습니다. 그러나 온라인에서 수행하는 방법에 대한 문서를 보지 못했습니다. 두 투영을 서로 문자열링하면 최종 투영 만 효과가 있습니다. 거기에 사람에게