我正在尝试弄清楚如何通过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 } },
}),
})
1条答案
按热度按时间anauzrmj1#
这里的区别与数据类型有关。您当前的查询在
_id
上过滤时有效:此查询的
$oid
组件与您对该字段使用(默认)ObjectId类型这一事实有关。$oid
本身是该数据类型的扩展JSON表示。其他语言和接口具有不同的表示或构造ObjectId的方式。您的
level
字段具有不同的数据类型-数字。因此,尝试对该字段执行类似的查询,例如:将导致查询失败(如果由于
<value>
的specific structure而无法从<value>
创建ObjectId)或不返回任何文档(因为没有文档具有此字段的ObjectId)。移除 Package
$oid
应可解决此问题:型