我有一个包含与此类似的文档的表:
{
"title": "title 2",
"content": "This far, no further!",
"category": "Fiction"
}
这是我正在使用的查询:
r.table('posts').group('title').map(lambda item:
{'items': item['title']}
).run())
这是输出:
{
"title 1" : [
{
"items" : "title 1"
},
{
"items" : "title 1"
}
],
"Title 2" : [
{
"items" : "Title 2"
},
{
"items" : "Title 2"
},
{
"items" : "Title 2"
},
{
"items" : "Title 2"
}
],
"title 3" : [
{
"items" : "title 3"
}
]
}
但是我希望得到一个如下所示的输出结构:
{
"Title 1" : {
"item_count" : 3,
"items" : [
{
"items" : "title 1"
},
{
"items" : "title 1"
},
{
"items" : "title 1"
}
]
},
"Title 2" : {
"item_count" : 2,
"items" : [
{
"items" : "title 2"
},
{
"items" : "title 2"
}
]
},
"Title 3" : {
"item_count" : 1,
"items" : [
{
"items" : "title 3"
}
]
}
}
如何创建查询以获得此结果。
答案 0 :(得分:0)
为此,您需要在map
中执行ungroup
后查询map
。
首先,您的第一个查询的输出看起来不正确。 RethinkDB在[
{
"group": "title 1" ,
"reduction": [
{
"items": "title 1"
} ,
{
"items": "title 1"
}
]
} ,
{
"group": "title 2" ,
"reduction": [
{
"items": "title 2"
} ,
{
"items": "title 2"
}
]
} ,
...
]
操作后不会返回对象/字典,它会返回一个数组。我从您的查询中得到的输出如下:
items
如果你想要的是一个名为items
的属性,以及// THIS IS JAVASCRIPT
r.table('posts')
.group('title')
.map(function (item) {
return {
items: item('title')
}
})
.ungroup()
.map(function (row) {
return {
'title': row('group'),
'items': row('reduction'),
'count': row('reduction').count()
}
})
属性有多少项的计数,你可以执行以下操作:
[
{
"count": 2 ,
"items": [
{
"items": "title 1"
},
{
"items": "title 1"
}
],
"title": "title 1"
},
{
"count": 2 ,
"items": [
{
"items": "title 2"
} ,
{
"items": "title 2"
}
] ,
"title": "title 2"
},
...
]
该查询的结果如下:
r.object
如果您想将该查询转换为对象/词典以便您可以通过它的标题调出帖子,则可以使用r.args
将该帖子数组转换为对象与// THIS IS JAVASCRIPT
r.table('posts')
.group('title')
.map(function (item) {
return {
items: item('title')
}
})
.ungroup()
.map(function (row) {
return {
'title': row('group'),
'items': row('reduction'),
'count': row('reduction').count()
}
})
.do(function (rows) {
return r.object(r.args(rows.concatMap(function (row) {
return [row('title'), row];
})));
})
一起。完整的查询将如下所示:
{
"title 1": {
"count": 2 ,
"items": [
{
"items": "title 1"
} ,
{
"items": "title 1"
}
] ,
"title": "title 1"
} ,
"title 2": {
"count": 2 ,
"items": [
{
"items": "title 2"
} ,
{
"items": "title 2"
}
] ,
"title": "title 2"
} ,
...
}
该查询的结果将是这样的:
stylesOutputFilename