运行下面的代码时,我得到的是第一项,而不是最后一项.为什么会这样呢?

async def example():
    db: google.cloud.firestore.AsyncClient = AsyncClient()
    await db.document("1/1").set({"a": "1"})
    await db.document("1/2").set({"a": "2"})
    last = (
        await (
            db.collection("1")
            .order_by("a")
            .limit_to_last(1) # <= not working - getting the first not last
            .get()
        )
    )[0].to_dict()
    first = (
        await (
            db.collection("1")
            .order_by("a")
            .limit(1)
            .get()
        )
    )[0].to_dict()
    print(first, last) # {'a': '1'} {'a': '1'}


asyncio.run(example())

解决方法是使用limit()的降序排序.但我不明白-limit_to_last()函数的目的是什么?

推荐答案

如果数据库架构如下所示:

db
|
--- 1 (collection)
    |
    --- 1 (document)
    |   |
    |   --- a: "1"
    |
    --- 2 (document)
        |
        --- a: "2"

然后执行以下查询:

db.collection("1").order_by("a").limit_to_last(1)

真的会回来:

{'a': '2'}

因为结果中的最后一个元素是第二个文档.我测试了一下,它起作用了.然而,当您想要存储数字时,not建议将它们存储为字符串,而不是数字.为什么?因为当你对字符串进行排序时,顺序是lexicographically.

Python相关问答推荐

在Python中使用readline函数时如何向下行

如何从格式为note:{neighbor:weight}的字典中构建networkx图?

在Transformer中使用LabelEncoding的ML模型管道

如何获取Django REST框架中序列化器内部的外卡属性?

telegram 机器人API setMyName不起作用

有没有方法可以修复删除了换码字符的无效的SON记录?

替换字符串中的点/逗号,以便可以将其转换为浮动

如何使用entry.bind(FocusIn,self.Method_calling)用于使用网格/列表创建的收件箱

Pandas 填充条件是另一列

Python 3.12中的通用[T]类方法隐式类型检索

Select 用a和i标签包裹的复选框?

try 在树叶 map 上应用覆盖磁贴

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

Pandas - groupby字符串字段并按时间范围 Select

如何在solve()之后获得症状上的等式的值

Python中绕y轴曲线的旋转

Pandas Loc Select 到NaN和值列表

调用decorator返回原始函数的输出

Matplotlib中的字体权重

如何使用使用来自其他列的值的公式更新一个rabrame列?