2016-08-08 43 views
1

我試圖插入一些三元組,通過JavaScript(查詢控制檯),到形式的JSON文件如何在Marklogic JSON文檔中插入多個三元組?

declareUpdate(); 
xdmp.documentInsert('/aem/5/content/demo-spark/en_GB/automation_article.json', 
{ 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/author", 
    "object" : "jasonmoore" 
    }, 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/id", 
    "object" : "automation_article2" 
    }, 
    "triple" : { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/dateCreated", 
    "object" : "2015-08-14 09:38:10 GMT-7:00" 
    }, 
    "content" : { 
    . . . 
    } 
}); 

然而,當我看到新創建的文件中,只有最後的三是有的,其他兩人失蹤。

我需要做些什麼來獲得同一文檔中的前兩個三元組?

+0

你只能有一個具有相同名稱的一個關鍵。 –

回答

2

JSON對象存儲鍵值對。鑰匙是獨一無二的。

var obj = { 
 
    a : 'This is a property, but it will be overwritten', 
 
    a : 'Im really the value of a property' 
 
}; 
 

 
console.log(obj);

這是相同的說:

var obj = { 
 
    a : 'This is a property, but it will be overwritten' 
 
}; 
 

 
obj['a'] = 'Im really the value of a property'; 
 

 
console.log(obj);

現在你可以認爲發生的事情:每當你嘗試在關鍵"triple"插入被overwritting它包含什麼,以及最終存儲的價值是什麼 最後一個。

var myDbObject = {}; 
 
var obj = { 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/author", 
 
    "object" : "jasonmoore" 
 
    }, 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/id", 
 
    "object" : "automation_article2" 
 
    }, 
 
    "triple" : { 
 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
 
    "predicate" : "https://content.ea.com/iri/dateCreated", 
 
    "object" : "2015-08-14 09:38:10 GMT-7:00" 
 
    } 
 
}; 
 

 
Object.keys(obj).forEach(key=>{ 
 
    myDbObject[key] = obj[key]; 
 
}); 
 

 
console.log(myDbObject);

6

我嘗試添加這是一個評論,但它不會換行格式化。所以這只是Jose Hermosilla Rodrigo答案的延伸。

既然你不能有相同的名稱很多對象鍵,使用數組:

declareUpdate(); 
xdmp.documentInsert('/aem/5/content/demo-spark/en_GB/automation_article.json', 
{ "triples": [ 
    { "triple": { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/author", 
    "object" : "jasonmoore" 
    }}, 
    { "triple": { 
    "subject" : "https://content.ea.com/aem/5/content/demo-spark/en_GB/automation_article2.json", 
    "predicate" : "https://content.ea.com/iri/id", 
    "object" : "automation_article2" 
    }}, 
... 
], 
    "content" : { 
    . . . 
    } 
}); 
+0

主題,謂詞,對象屬性必須包裝在名爲triple的屬性中。除此之外,你可以把這樣的對象放在任何地方,在一個名爲triples的屬性中有一個這樣的三重對象的數組,或者叫做triple1,triple2等其他名稱屬性。只要有一個名爲triple的包裝屬性。 – grtjn

+0

我更新了代碼示例以反映此.. – grtjn

相關問題