RethinkDB:从对象中获取最后一个 N
RethinkDB: Get last N from an object
从对象中获取最后 N 个键值对的有效方法是什么?按键名排序,N 为任意整数。理想情况下,返回的类型也应该是一个对象。
像这样的东西应该可以工作
r.object(r.args(
a_single_object_return_from_a_reql_or_an_r_dot_expr
.do(function(doc) {
return
doc.keys().slice(0, THE_NUMBER_OF_KEY)
.concatMap(function(k) {
return [k, doc(k)]
})
})
))
假设我有 table s1 和这个文档,其 id 是:65e1546a-f23f-4fe6-9cd7-4ba580770123
:
{
"created_at": "2013-10-13 00:58:11" ,
"id": "65e1546a-f23f-4fe6-9cd7-4ba580770123" ,
"id_tweet": "389193311908413440" ,
"id_user": 12375562 ,
"name": "elgabo1" ,
"photo": https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png, »
"screen_name": "elgabo1" ,
"status_tweet": 1 ,
"text": "@profeco Deurope Gran Sur tapa los sellos de suspensión con propaganda"
}
应用上面的查询我可以像这样写东西来获得前 5 个键,return 一个对象:
r.object(r.args(
r.table('s1').get('65e1546a-f23f-4fe6-9cd7-4ba580770123')
.do(function(doc) {
return
doc.keys().slice(0, 5)
.concatMap(function(k) {
return [k, doc(k)]
})
})
))
结果:
{
"created_at": "2013-10-13 00:58:11" ,
"id": "65e1546a-f23f-4fe6-9cd7-4ba580770123" ,
"id_tweet": "389193311908413440" ,
"id_user": 12375562 ,
"name": "elgabo1"
}
如果你想要最后一个n,我会写obj.coerceTo('array').slice(-n).coerceTo('object')
。 (RethinkDB 中的对象通过键隐式地对它们的字段进行排序。)如果你想要第一个 n,我会写 .slice(0, n)
而不是 .slice(-n)
。
从对象中获取最后 N 个键值对的有效方法是什么?按键名排序,N 为任意整数。理想情况下,返回的类型也应该是一个对象。
像这样的东西应该可以工作
r.object(r.args(
a_single_object_return_from_a_reql_or_an_r_dot_expr
.do(function(doc) {
return
doc.keys().slice(0, THE_NUMBER_OF_KEY)
.concatMap(function(k) {
return [k, doc(k)]
})
})
))
假设我有 table s1 和这个文档,其 id 是:65e1546a-f23f-4fe6-9cd7-4ba580770123
:
{
"created_at": "2013-10-13 00:58:11" ,
"id": "65e1546a-f23f-4fe6-9cd7-4ba580770123" ,
"id_tweet": "389193311908413440" ,
"id_user": 12375562 ,
"name": "elgabo1" ,
"photo": https://pbs.twimg.com/profile_images/1827710728/45d1be6d2e0f1c710814e098d6f56c12_normal.png, »
"screen_name": "elgabo1" ,
"status_tweet": 1 ,
"text": "@profeco Deurope Gran Sur tapa los sellos de suspensión con propaganda"
}
应用上面的查询我可以像这样写东西来获得前 5 个键,return 一个对象:
r.object(r.args(
r.table('s1').get('65e1546a-f23f-4fe6-9cd7-4ba580770123')
.do(function(doc) {
return
doc.keys().slice(0, 5)
.concatMap(function(k) {
return [k, doc(k)]
})
})
))
结果:
{
"created_at": "2013-10-13 00:58:11" ,
"id": "65e1546a-f23f-4fe6-9cd7-4ba580770123" ,
"id_tweet": "389193311908413440" ,
"id_user": 12375562 ,
"name": "elgabo1"
}
如果你想要最后一个n,我会写obj.coerceTo('array').slice(-n).coerceTo('object')
。 (RethinkDB 中的对象通过键隐式地对它们的字段进行排序。)如果你想要第一个 n,我会写 .slice(0, n)
而不是 .slice(-n)
。