나는 다른 생각을 가지고 있습니다.
모든 MongoDB 명령 (예 : 사용중인 "group"명령)은 $cmd
이라는 가상 모음으로 액세스 할 수 있습니다. 서버에 {command_name: command_parameter, additional: "options", are: ["listed", "here"]}
문서를 찾도록 요청하면됩니다. MongoDB 서버의 모든 멋진 기능을 사용할 수 있어야하며, Opa API에는 지원되지 않으며 단일 찾기 쿼리가 있어야합니다. 여기에는 버전 2.2에서 도입 된 집계 프레임 워크와 버전 2.4부터 베타 버전으로 검색되는 전체 텍스트가 포함됩니다.
예를 들어, text
새 명령을 사용하여 coll_name
쿼리 문자열 query
에 대한 전체 텍스트 색인을 검색하고 싶습니다.
{ search: query, project: {_id:0, id:1}, }
|> Bson.opa2doc
|> MongoCommands.simple_str_command_opts(ll_db, db_name, "text", coll_name, opts)
|> MongoCommon.outcome_map(_, onsuccess, onfailure)
그리고 당신은 API의 소스 코드를 보는 경우에, simple_str_command_opts
: 나는 현재 (oncuccess
함수 답을 분석하고 발견 된 문서의 id
-s를 얻는 것입니다) 코드를 사용하고 Mongo에 findOne()
으로 구현됩니다.
하지만 그 대신 나는 높은 수준의 DB 지원을 사용할 수 있습니다
- 모든 : 포함 유형과 높은 수준의 DB 수집을 선언
/test/`$cmd`[{text: coll_name, search: query, project: {_id: 0, id: 1}}]
당신이해야 할 무엇,이다 쿼리를 만드는 데 사용하는 필드,
- 가능한 답을 얻을 수있는 모든 필드
text
명령에 대한
는 : 응용 프로그램 스타트 업 오파 런타임 DB 지원시 :( 작동하지 는 기본 키에 대한 고유 인덱스를 만들려고
type commands = {
// command
string text,
// query
string search,
{
int _id,
int id,
} project,
// result of executing command "text"
string queryDebugString,
string language,
list({
float score,
{int id} obj,
}) results,
{
int nscanned,
int nscannedObjects,
int n,
int nfound,
int timeMicros,
} stats,
int ok,
// in case of failure (`ok: 0`)
string errmsg,
}
불행히도, 그것은이다 세트의 (예를 {text, search, project}
다음에 대한) : 당신이 findOne()
를 사용해야하기 때문에 기본 키가 필요합니다 사용
database test {
article /article[{id}]
commands /`$cmd`[{text, search, project}]
}
을, 아니요 find()
입니다. 가상 콜렉션 $cmd
에 대한 색인 작성이 허용되지 않으며 DB 초기화가 실패합니다.
색인을 만들 수 오파을 막을 수있는 방법을 찾을 경우, 당신은 더 이상 다음 높은 수준의 API를 사용하지 몽고의 모든 멋진 기능을 사용할 수 있습니다)
그래서 내가 높은으로 집계 할 수없는 수준의 API를 사용할 수 있습니까? 내가 OPA 문서 http://doc.opalang.org/module/stdlib.apis.mongo/MongoCollection – gogson
I 원칙 당신이 할 수있는 그룹/독특한/카운트 방법을 본 적이 그래도 난 오파에서 집계를 사용한 적이 . 지금까지 사용한 저수준 API의 유일한 부분은 포럼의 [카운터] (http://forum.opalang.org/0_323)입니다. :) –