gpt4 book ai didi

javascript - 如何在 MongoDB 中找到对象数组和集合之间的交集?

转载 作者:行者123 更新时间:2023-12-05 04:21:20 24 4
gpt4 key购买 nike

给定以下形式的 Mongo 数据集合:

// 'Entities'
{ tags: [{ a: '1', b: '1' }, { a: '2', b: '3' }] }
{ tags: [{ a: '1', b: '2' }, { a: '2', b: '3' }] }
{ tags: [{ a: '4', b: '4' }, { a: '4', b: '5' }, { a: '6', b: '7' }] }

我想查找其“标签”条目具有以下任何对象的所有文档:

[{ a: '1', b: '1' }, { a: '4', b: '4' }]

对于示例数据,这将匹配第一个和第三个元素:

{ tags: [{ a: '1', b: '1' }, { a: '2', b: '3' }] }
{ tags: [{ a: '4', b: '4' }, { a: '4', b: '5' }, { a: '6', b: '7' }] }

目前我正在使用生成的查询 (JS) 执行此操作:

entities.find({
$or: tags.map(tag => ({
tags: { $elemMatch: tag },
})
})

但这看起来效率很低,就好像我要搜索的标签数量很大一样,我基本上会运行数百个单独的查询。有没有更好的方法?

最佳答案

看起来您可以改用 $in 运算符,这应该会在大规模情况下提供更好的性能(和更清晰的代码)。

db.collection.find({
approvers: {
$in: tags
}
})

Mongo Playground

关于javascript - 如何在 MongoDB 中找到对象数组和集合之间的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74248585/

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