"string"
및 ObjectId("string")
은 MongoDB 셸에서 동일한 내용이 아닙니다. "string"
과 BSON::ObjectId.from_string("string")
은 몽고 이드를 사용할 때 동일한 것이 아닙니다. 그래서 자바 스크립트 하나에 해당하는 Mongoid 쿼리은 다음과 같습니다
User.in(interest_ids: [BSON::ObjectId.from_string("string")])
.order_by(:rank => 'desc')
.limit(100)
나 : 당신이 그들에게 강제로 그들과 함께 뭔가를 할 때까지
이
User.where(:interest_ids.in => [BSON::ObjectId.from_string("string")])
.order_by(:rank => 'desc')
.limit(100)
Mongoid 쿼리가 데이터베이스에 액세스하지 않는,이 액티브의 일치 행동을 기대해야합니다. 그런 다음 문서를로드하는 쿼리를 강제하려면 그렇게 말 :
User.where(:interest_ids.in => [BSON::ObjectId.from_string("string")])
.order_by(:rank => 'desc')
.limit(100)
.to_a # <-------------------
당신은 또한 .entries
을 말하거나 등 .each
당신의 분야, interest_ids
의 복수의 이름으로 결과를 반복 시작할 수 있었다, 실제로 BSON::ObjectId
이 아닌 BSON::ObjectId
의 배열임을 제안합니다.
db.getCollection('users').find({ interest_ids: ObjectId("string") }).sort({rank: -1}).limit(100)
과 Mongoid 버전은 다음과 같습니다 : 그런 경우, 다음 MongoDB를 쿼리해야
User.where(:interest_ids => BSON::ObjectId.from_string("string"))
.order_by(:rank => 'desc')
.limit(100)
MongoDB를 그렇게 { array_field: scalar_value }
모든 문서를 찾을 것 자체에 배열 필드 안에 볼 것이다 array_field
의 요소 중 어느 하나가 scalar_value
과 일치합니다.