/ / Kann Mongoid "any_of" die Verwendung externer Dokumentbeziehungen einschließen? - Ruby-on-Rails-3, Mongodb, Mongoid

Kann Mongoid "any_of" die Verwendung externer Dokumentbeziehungen einschließen? - Ruby-on-Rails-3, Mongodb, Mongoid

Ich benutze MongoDB mit Mongoid und versuche, eine rudimentäre Suche als Platzhalter einzurichten, bevor wir uns mit Gewichtung usw. befassen any_of Die Methode scheint darin zu bestehen, meine eingebetteten Dokumente zu finden, aber nicht diejenigen, die durch Beziehungen verbunden sind. Weiß jemand ob any_of kann Beziehungen zu anderen Dokumenten in die Datenbank aufnehmen, und wenn ja, wie lautet die Syntax?

belongs_to :principal #owner
belongs_to :account #owner

scope :search, ->(text) { any_of(
{:description => /#{text}/i},
{:name => /#{text}/i},
{"entries.title" => /#{text}/i},
{"entries.description" => /#{text}/i},
{:tags => /#{text}/i},
{"account.name" => /#{text}/i},  # Not finding by account name - because account isn"t embedded?
{"principal.name" => /#{text}/i} # Not finding by principal name - because not embedded?
)}

Antworten:

2 für die Antwort № 1

Nein, irgendein von ist das Äquivalent einer MongoDB $ oder Abfrage, so wäre die native MongoDB so etwas wie:

db.collection.find(
{ "text" :
{ "$or" :
[ { "account.name" => /#{text}/i }, { "principal.name" => /#{text}/i } ]
}
})

Mongo-Abfragen werden nur über eine einzelne Sammlung ausgeführt, um das Problem zu lösen account.name und principal.name Felder, die in das Dokument eingebettet werden müssen, z.

{
text:
{
description: "...",
name: "...",
account: { name: "..." },
principal: { name: "..." }
}
}