如何获取嵌套数组字段:查询Employee数组最后元素及正确计数
解决RethinkDB中获取数组真实长度及最后一个元素的问题
你这是把「序列的计数」和「数组内部的元素计数」搞混啦!咱们一步步拆解问题,找到解决方案:
为什么你的count()返回1?
当你执行r.table("user")("Employee").count()时,RethinkDB实际在做的是统计整个user表中有多少条文档包含Employee字段,而不是统计每个Employee数组里的元素数量。如果你的表中只有1条带Employee数组的记录,那返回1就很正常——这和数组内部有3个元素完全是两回事~
获取Employee数组的真实元素数量
要统计数组内部的元素数,你需要遍历表中的每个文档,对每个文档里的Employee数组单独调用count():
// 输出每条文档对应的Employee数组长度(带文档ID方便对应) r.table("user").map(function(doc) { return { docId: doc("id"), employeeTotal: doc("Employee").count() } })
如果你的user表中只有一条目标记录,也可以直接指定文档ID来获取:
r.table("user").get("目标文档ID")("Employee").count()
获取Employee数组的最后一个元素
RethinkDB的数组支持负数索引,用nth(-1)就能直接拿到数组的最后一个元素:
针对单条记录:
r.table("user").get("目标文档ID")("Employee").nth(-1)
针对所有记录(返回每条记录的Employee数组最后一个元素):
r.table("user").map(function(doc) { return { docId: doc("id"), lastEmployee: doc("Employee").nth(-1) } })
内容的提问来源于stack exchange,提问作者Qousar bashir
相关产品推荐
相关产品推荐

