用数组过滤猫鼬数组?

Posted

技术标签:

【中文标题】用数组过滤猫鼬数组?【英文标题】:Filter mongoose array with an array? 【发布时间】:2022-01-11 11:48:08 【问题描述】:

当我尝试将猫鼬过滤器应用于数组元素时,我遇到了困难。我找到了一份关于 $elemMatch 的文档,但我很困惑,这是最适合我的情况的方法。这就是我问问题的原因。

非常感谢--

这里我有带有标签的 mongoDB 文档。实际上是一个数组。

...................
...................
tag: [
  name: "fashion",
  name: "mobile"
]
...................
...................

图片在这里-Click to see images。

我再次从 forntend 应用程序中获取了一个数组,例如-


  tags: [
    name: "fashion",
    name: "Computer
 ]

现在我必须过滤是否只匹配一个或多个标签。我该如何应用它。

我正在尝试这样的 elemMatch

await Product.find(tags: $elemMatch: name: $in: ["Fashion", "Computer"]

是正确的还是我必须更改我的代码?

【问题讨论】:

【参考方案1】:

是的,这是正确的,$in 您提供了一组标签,这些标签应该包含在文档数组中,至少其中一个。 这是通常的方法,看起来非常正确。

如果你想让你的文档的标签数组匹配多个标签,你可以使用$and而不是$in

【讨论】:

以上是关于用数组过滤猫鼬数组?的主要内容,如果未能解决你的问题,请参考以下文章

使用数组过滤器更新多个嵌套数组在猫鼬中不起作用

如何使用 $elemMatch 查找和过滤并更新数组的所有元素该元素在猫鼬中有一个特殊的日期?

如何通过猫鼬(javascript)中的多个值查询数组内的对象?

猫鼬总是返回空数组? [复制]

猫鼬总是返回空数组? [复制]

使用猫鼬对数组中的值进行排序