Ich benutze Lift-Json render eine Bson-String mit Klasse Extraktor, danach verwenden Sie Mongo Document
Klassenkonstruktor eine Dokument-Instanz mit dieser Bson-Zeichenfolge.Wie Lift-Json Klasse Extraktor Konstruktor Mongo Bson Array zu verwenden?
Ein Problem ist, wie repräsentieren $or
bson.Es scheint nicht ein klassisches JSON-Array.
{"$or": [
{"username": "administrator"},
{"phone":"110"},
{"email":"[email protected]"},
{"pen_name":"lorancechen"}
]}
Wie Lift-Klasse-Extraktor verwenden, stellen Sie diese Bson-Array?
Außerdem der Grund für die Verwendung Zeichenfolge zwischen App und Mongo ist sie unter einem einfachen Socket kommunizieren.
UPDATE hinzufügen Beispiel
Extraktor eine normale Array-Klasse wie folgt:
import net.liftweb.json._
import net.liftweb.json.Extraction._
case class Name(name: String)
case class JsonArray(array:List[Name])
object JsonClient extends App {
implicit val formats = DefaultFormats
val names = Name("jone01") :: Name("jone02") :: Nil
val array = JsonArray(names)
val jsonString = prettyRender(decompose(array))
println(jsonString)
}
OUTPUT:
{
"array":[
{
"name":"jone01"
},
{
"name":"jone02"
}
]
}
Wie diese vertreten
{"$or": [
{"username": "administrator"},
{"phone":"110"},
{"email":"[email protected]"},
{"pen_name":"lorancechen"}
]}
jeden Feldschlüssel (zB username
, phone
) von Element inneren "$ oder" ist kein gemeinsamer Schlüsselname und ich habe keinen Weg gefunden, es zu repräsentieren verwenden Klassenvorlage.
Warum denken Sie, das ist kein normales Array? Ein Dokument ist kein Array. Fragen Sie, wie Sie alle Dokumentschlüssel als einzelne Elemente in einem Array darstellen? –
@BlakesSeven, ich habe ein Beispiel hinzugefügt.Ich denke, es wird direkt auszudrücken, was ist mein Wunder. – LoranceChen
Ohne den Code selbst zu testen, sagst du, dass die Ausgabe tatsächlich den Schlüssel 'array' enthält? Würde die Ausgabe von 'JsonArray (names)' nicht direkt als Eingabe von '$ or' (die ein Array von Dokumenten verwendet) erstellt. Das scheint die einfachste Verwendung zu sein. –