为什么它只在JSONiq中返回最后一个元素?

时间:2016-03-12 05:30:57

标签: mysql sql json jsoniq

Images of my json and query

enter image description here

Json代码

{
    "reading_list": {
        "book": {
            "name": "Fifty shades of grey",
            "author": "E.L James",
            "date": "March 2015",
            "comment": "did not like it very much"
        },
        "book": {
            "name": "The grass is singing",
            "author": "Doris Lessing",
            "date": "April 2015",
            "comment": "enjoyed it quite a bit"
        },
        "book": {
            "name": "A short history of nearly everything",
            "author": "Bill Bryson",
            "date": "June 2015",
            "comment": "very informative"
        },
        "book": {
            "name": "JSON in 24 hours",
            "author": "Peter Settler",
            "date": "in the year",
            "comment": "read for work"
        },
        "book": {
            "name": "Miss Smilla's feeling for snow",
            "author": "Peter Hoeg's",
            "date": "in the year",
            "comment": "read for entertainment"
        }
    }
}

查询代码:

for $x in reading_list
return $x("book")/name

正如你从链接中看到的那样,我希望得到所有的书名,但我只得到:

Miss Smilla's feeling for snow.
The output should be like this:
Fifty shades of grey
A short history of nearly everything
The grass is singing
JSON in 24 hours
Miss Smilla's feeling for snow

有什么问题?请帮忙

1 个答案:

答案 0 :(得分:0)

在JSONiq数据模型(JDM)中,不允许使用重复的键(例如您的示例中的书)。似乎这个实现不会抛出错误,而是使用该密钥进行最后一对。

original JSON RFC中,这个约束应该是应该的。您可以通过将阅读列表建模为一系列书籍来提高互操作性。