Я столкнулся с this blog post в поисках способа организации отношений. То, что меня путает, это синтаксис следующего утверждения. Я понимаю, что в силу яваскрипта переменных возможно следующее ..
var party = {
_id: "chessparty",
name: "Chess Party!",
attendees: ["seanhess", "bob"]
}
var user = { _id: "seanhess", name: "Sean Hess", events: ["chessparty"]}
db.events.save(party)
db.users.save(user)
db.events.find({_id: {$in: user.events}}) // events for user
db.users.find({_id: {$in: party.attendees}}) // users for event
Что бросает меня на спину в двух последних строках, хотя, так что я пытаюсь сделать что-то подобное в Java , Поэтому я понимаю идею, но я хочу сделать это в Java, точнее, в компоненте Camel/MongoDB.
Я ссылался на the following documentation и смотрел операцию «findAll». Так что мне нужно сначала запустить запрос, чтобы получить массив, например «user.events», а затем запустить второй запрос, чтобы найти список событий? Или есть способ ссылаться на поле «события» в коллекции «db.user» как часть запроса на «db.events»?
Что-то мелодии следующее с помощью одного запроса ..
pseudo idea: db.events.find({_id: {$in: [db.user.events]}})
В конце концов я ищу, чтобы перевести это на что-то вроде следующего ..
from("direct:findAll")
.setBody().constant("{ \"_id\": {$in :\"user.events\" }}")
.to("mongodb:myDb?database=sample&collection=events&operation=findAll")
.to("mock:resultFindAll");
Я бит новый для компонента верблюда mongodb, так что мне интересно, есть ли какие-то гуру, которые уже были там, что-то подобное? И попросите совета по этому вопросу. Или узнать без двух дней проб и ошибок, что это просто невозможно ...?
Спасибо!