通过API请求过滤mongodb数据

jpfvwuh4  于 2022-12-18  发布在  Go
关注(0)|答案(1)|浏览(116)

我正在尝试弄清楚如何通过API请求过滤mongodb Atlas中的数据。

{
_id: ObjectId,
level: number,
names: Array
}

我学习了如何通过_id进行过滤,我通过url传递id,并使用filter参数获取数据,在主体中使用$oid
但问题是:如何通过level过滤数据,并获得分配给某些level的数据列表?我不知道使用什么代替$oid🤷🏻‍ ♂️如果我只是将id/_id更改为level,我不会收到任何东西。

const {
    query: { id },
    method,
  } = req

....

  const readData = await fetch(`${baseUrl}/find`, {
    ...fetchOptions,
    body: JSON.stringify({
    ...fetchBody,
    filter: { _id: { $oid: id } },
     }),
    })
anauzrmj

anauzrmj1#

这里的区别与数据类型有关。您当前的查询在_id上过滤时有效:

{ _id: { $oid: id } }

此查询的$oid组件与您对该字段使用(默认)ObjectId类型这一事实有关。$oid本身是该数据类型的扩展JSON表示。其他语言和接口具有不同的表示或构造ObjectId的方式。
您的level字段具有不同的数据类型-数字。因此,尝试对该字段执行类似的查询,例如:

{ level: { $oid: <value>} }

将导致查询失败(如果由于<value>specific structure而无法从<value>创建ObjectId)或不返回任何文档(因为没有文档具有此字段的ObjectId)。
移除 Package $oid应可解决此问题:

{ level: <value> }

相关问题