gpt4 book ai didi

node.js - Mongodb 查找操作查询 ($gte, $lte) 不工作

转载 作者:行者123 更新时间:2023-12-04 14:50:20 25 4
gpt4 key购买 nike

我在使用 MongoDB 查询时遇到问题。问题已解决,但我想检查一下我是否可以采取任何其他方法。

起初,我的模型(广告)有一个价格属性:{type: String},我试图通过查询$gte来查找$lt 获取价格在给定范围内的广告。

在线阅读后,我发现查询操作不适用于 String 类型的属性。

然后即使将类型更改为 Number - price: {type: Number} - find 函数无法在价格上正常工作,即使在其他类型为 Number 的属性上它也能正常工作正如它应该。最后,我只是删除了整个数据库并重新上传,然后一切正常(没有改变任何东西)。有没有人遇到过这种问题并以不同的方式解决了它?

最佳答案

我首先假设您使用的是 mongoose,因为您粘贴的“类型”看起来像 mongoose 模式类型。

你需要把这两个概念分开:

  1. 表示应用级别数据的架构
  2. 数据库中的实际数据。

假设我有一个特定集合的架构:

{ name: String }

但在实际数据库中,该集合中只有一个文档如下所示:

{ price: 5, product_id: 1 }

然后,当我查询数据时,您希望发生什么?您希望 mongoose 自动为该文档生成名称并删除实际字段吗?

它没有按预期“工作”的原因是所有值都保存为 string,更改 Schema 不会追溯更新数据库,因此当您使用 $ lt$gte 它使用 string 比较,这意味着 "10" 小于 "9" 因为这就是字符串比较的工作方式。

模式确实有助于新插入的数据,并且可以将其转换为正确的类型(如果支持),为此您应该检查文档中哪些值可用。

关于node.js - Mongodb 查找操作查询 ($gte, $lte) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69172706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com