2016-08-01 21 views
0

ich ein json Dokument in meinem DB haben, die wie folgt aussieht:Marklogic | NodeJS API - Abfrage auf einer bestimmten Kategorie „Eigenschaften“

{ 
"uri" : "/me/myself/and/bd1e0f91656bfc713eb6560eeaad7ad1.json", 
"category" : "content", 
"format" : "json", 
"versionId" : "14697362595356370", 
"contentType" : "application/json", 
"contentLength" : "1938", 
"collections" : ["http://me.myself.com/collectionA"], 
"properties" : { 
    "relatives" : ["/me/myself/and/B.json", "/me/myself/and/A.json"] 
}, 
"content":{} 

}

Ich versuche, alle Dokumente zu erhalten, haben einen bestimmten Verwandten in den Eigenschaften:

qb.where(
    qb.scope(
    qb.property('relatives'), 
    qb.word("/me/myself/and/B.json"), 
    qb.fragmentScope('properties') 
)) 

Aber ich bekomme immer eine große Menge von Dokumenten, die nicht die Abfrage passt.

Haben Sie eine Idee, wie Sie dies mit der Marklogic NodeJS API tun?

Antwort

0
qb.where(
    qb.propertiesFragment(
    qb.term('/me/myself/and/B.json') 
) 
) 

Das funktionierte für mich.

1

Ich sehe zwei Dinge, die aussehen, als könnten sie Probleme sein. Die erste ist qb.fragmentScope('properties'). Dies weist MarkLogic an, in den document's properties statt den Inhalt des Dokuments zu suchen. Das sieht nicht so aus, wie Sie es mit Ihrem Beispiel-JSON-Dokument gemeint haben.

Das zweite Problem ist das Wort Query - "/me/myself/and/B.json" wird wahrscheinlich in seine konstituierenden Wörter (mich, mich, und, B, json), die dann übereinstimmen, aufgeteilt werden in anderen Dokumenten. Sie wollen genau entsprechen, was es gibt, so versuchen, einen Wert query:

qb.where(
    qb.scope(
    qb.properties('properties'), 
    qb.value('relatives', '/me/myself/and/B.json') 
) 
) 

Beachten Sie, dass die qb.scope und die qb.properties sind um die Suche einzuschränken, um nur mit dem Wert übereinstimmen, wenn es in relatives unter einer properties JSON Eigenschaft erscheint. Dies unterscheidet sich von dem obigen JSON-Eigenschaft-gegen-Inhalt-Punkt.

+0

Ich suche tatsächlich in den Eigenschaften des Dokuments abzufragen. Wie Sie in meinem Beispiel sehen können, ist der Inhalt leer. – Anouar