2017-11-20 9 views
0

こんにちは、MarkLogic 9とNodeJSを組み合わせてQueryingを初めて使用し、MarkLogic 9(https://docs.marklogic.com/guide/search-dev/qbe)の例で説明したようにQBE(Query By Example)次の文でxquery:MarkLogic Query By Exampleが不正な結果を返す

xquery version "1.0-ml"; 
declare namespace html = "http://www.w3.org/1999/xhtml"; 

let $items := fn:collection()/scope/item 
for $i in $items 
    let $sscc := $i/*:transaction/*:sscc/text() 
    let $type:= $i/*:transaction/*:type/text() 
    let $actorId := $i/*:transaction/*:actorId/text() 
    let $device := $i/*:transaction/*:device/text() 
    let $ordernummer := $i/*:order/*:orderNumber/text() 
    where $ordernummer = 3788888 
    return <td>{$sscc}</td> 

これは46の結果を返します。私はQBEでこれをしようとすると:

exports.postQuery = function(req, res) { 


var queryInput = req.body.message 
    console.info('Start postQuery!!!') 
    console.info(queryInput) 
    db.documents.query(
    //qb.where(qb.byExample(
    // queryInput 
    qb.byExample({ 
     $query: { 
     orderNumber: {$word : '3788888'}, 
     $filtered: true 
     }, 
     $format: 'json' 
})) 

それはそれは私がすべての可能性を使用数が10件のレコードを示しているため母校ない10件の結果の代わりに、46を返します。私が間違っていることを教えてもらえますか? MarkLogic内

ソースXMLファイルは、この形式では、次のとおりです。

<scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <item> 
     <transaction> 
      <type>CI</type> 
      <sscc>00000379471900000025</sscc> 
      <location>4260210630688</location> 
      <device>VISTALINK.004</device> 
      <date>2017-04-25</date> 
      <time>02:15:33</time> 
      <gmtOffset>+02:00</gmtOffset> 
      <actorId>155081</actorId> 
     </transaction> 
     <order> 
      <orderNumber>3794719</orderNumber> 
     </order> 
     <load> 
      <rti> 
       <ean>8714548186004</ean> 
       <grai>8003087145481860040019877322</grai> 
       <column>2</column> 
       <size> 
        <width>1900</width> 
        <height>95</height> 
        <depth>0</depth> 
       </size> 
       <position> 
        <x>2062,48707520218</x> 
        <y>2015,24337520512</y> 
        <z>0</z> 
       </position> 
      </rti> 
      <rti> 
       <ean>8714548106002</ean> 
       <grai>8003087145481060020016434653</grai> 
       <column>0</column> 
       <size> 
        <width>1900</width> 
        <height>95</height> 
        <depth>0</depth> 
       </size> 
       <position/> 
      </rti> 
      <rti> 
       <ean>8714548186004</ean> 
       <grai>8003087145481860040012803719</grai> 
       <column>2</column> 
       <size> 
        <width>1900</width> 
        <height>95</height> 
        <depth>0</depth> 
       </size> 
       <position> 
        <x>2064,20629390666</x> 
        <y>2124,57539157396</y> 
        <z>0</z> 
       </position> 
      </rti> 
      <rti>...</rti> 
      <rti>...</rti> 
      <rti>...</rti> 
      <rti>...</rti> 
      <rti>...</rti> 
     </load> 
    </item> 
</scope> 

マニーのおかげで結果リストの上にMarkLogicクライアントページで

エリック

答えて

2

検索要求。デフォルトのページ長は10の結果です。

さらに多くの結果を得るには、スライス方法を使用して長さを指定します。

qb.where(qb.byExample(...)) 
    .slice(0, Number.MAX_SAFE_INTEGER) 
    .withOptions({search: ['filtered']}) 

警告:大量の結果セットのための実用的なアプローチの代わりに、一度にすべての結果を取得しようとしているのページにあるすべての結果を取得するには、JavaScriptのMAX_SAFE_INTEGER定数を使用することができます。詳細については

、以下を参照してください

http://docs.marklogic.com/jsdoc/queryBuilder.html#slice

は、それが助けを期待して、

+0

含まれ、またhttp://docs.marklogic.com/guide/node-dev/search#id_56954参照してください。ページネーションの使い方の簡単な例です。 – kcoleman

関連する問題