이벤트 기반 응용 프로그램에 Mongoid와 함께 Rails 4를 사용하고 있습니다. 해당 배열에 포함 된 문서가있는 배열 필드를 추가 할 모델을 만들려고합니다. 이 삽입 된 문서에는 사용자의 지역 좌표와 타임 스탬프가 포함됩니다. 5 분마다 사용자의 최신 좌표를 사용자 (위치) 배열로 푸시합니다. 누군가 나를 도와주세요, 어떻게 만들 수 있습니까?다른 문서가 Mongodb (Mongoid)의 임베디드 문서로 포함 된 배열 필드로 모델을 만드는 방법
필자의 샘플 모델과 원하는 문서는 다음과 같습니다. 여기
class User
include Mongoid::Document
field :name, type: String
field :locations, type: Array
end
나는
여기내가 찾고 있어요 샘플 문서입니다 밀어 원하는 결과 :
{ _id : ObjectId(...),
name : "User_name",
locations : [ {
_id : ObjectID(...),
time : "...." ,
loc : [ 55.5, 42.3 ]
} ,
{
_id : ObjectID(...),
time : "...",
loc : [ -74 , 44.74 ]
}
]
}
나는 통해 임베디드 문서없이 위치 배열의 값을 추가 할 수 있었다 IRB를 사용하지만 나중에 MongoDB의 Geospatial 쿼리를 사용할 것이므로 Mongo Documentation에서 언급 한 2D 인덱스와 나머지 요소를 사용하고 싶습니다. 위도가 &이고 위도가 포함 된 문서 배열이 필요하다고 생각합니다. 그러면 코드 작성 시간도 절약됩니다.
또한 '_id'문서로 위치 시간을 지정할 수 있습니까? (쿼리 오버 헤드를 줄이는 데 도움이 될 수 있습니다.)
누군가가 모델 구조에 대해 도움을 줄 수 있다면 제가 정말로 쓸모가 있습니다.
P.S : mongoDB에 지형 공간 데이터를 저장하는 데 도움이 될만한 추가 참조 자료 나 도움이 필요하면 알려주십시오.
: 대신
(association)_attributes=
방법을 사용하여보다 더 낫다입니다. 쿼리가 작동하는 동안 배열의 항목이 "조건"과 일치하거나 "가까운"위치에있는 것을 "알 수있는"것은 쉽지 않습니다. 데이터가 다른 컬렉션에서 더 나을 때가 종종 있습니다. 어쩌면 먼저 모델을 작성하는 방법을 더 잘 이해하기 위해 예상되는 쿼리 패턴에 대해 몇 가지 질문을해야 할 것입니다. –@ NeeLunn 위치에 대한 다른 컬렉션을 만든 다음 사용자 문서에 포함 시키면 사용자 문서가 너무 커서 처리 할 수 없습니다. NoSQL으로 작업 한 것은 이번이 처음입니다. 성능 향상에 사용하고 있으며 위치 기반 응용 프로그램을위한 쉬운 API가 될 것입니다.나는 언제나 사용자의 좌표를 얻을 것으로 기대하고 있으며 사용자 수는 수천 명에이를 것이다. 가능한 한 사용자를 1-3 미터 가까이 찾으므로지도를 표시 할 수 있습니다. 그것에 대한 당신의 생각은 무엇입니까? – punkb
내 코멘트의 일반적인 요점과 마찬가지로, 여기에 몇 가지 질문을 게시하고 /하거나 당신이하려고하는 부분을 설명하는 다른 목록을 시도하는 데 도움이 될 수 있습니다. 일반적으로 NoSQL에서는 먼저 문제를 해결 한 다음 다른 방법보다 최적의 데이터 모델을 얻습니다. 이 질문은 단지 mongoid에서 모델을 코딩하는 방법을 묻습니다. –