【问题标题】:datastore get last key in range?数据存储区获取范围内的最后一个键?
【发布时间】:2016-10-23 06:30:39
【问题描述】:

我有一组对象,这些对象是我根据一些 google 文档推荐创建的,用于您希望具有局部性的对象。

所以我有带有“名称#00000001”形式的键的对象。我的事情是我有一个操作,我需要得到最后一个,所以我可以用下面的代码得到它们。

var query = datastore.createQuery('Post')
        .select('__key__')
        .filter('__key__', '>=', datastore.key(['Post', req.query["Thread"] + "#00000001"]))
        .filter('__key__', '<=', datastore.key(['Post', req.query["Thread"] + "#99999999"]));

事情就是当我做类似的事情时

var query = datastore.createQuery('Post')
        .select('__key__')
        .filter('__key__', '>=', datastore.key(['Post', req.query["Thread"] + "#00000001"]))
        .filter('__key__', '<=', datastore.key(['Post', req.query["Thread"] + "#99999999"]))
        .order('__key__',{descending: true})
        .limit(1);

失败了。看来我根本无法按键订购。除此之外,这些项目还有时间戳,但您似乎无法按 1 个项目过滤并按另一个项目排序。无论如何都可以在不查询所有内容的情况下通过查询获取最后一项?

【问题讨论】:

    标签: javascript node.js google-app-engine key


    【解决方案1】:

    在 Google Cloud-Java 中,请参阅 StructuredQuery。你可以 .setOrderBy(OrderBy.asc("__key__"))

    【讨论】:

    • 但是数据存储支持索引,在这种情况下最好认为索引数据有一个大的二叉树。您希望能够从二叉树中获取最后一个元素...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多