mongodb - MongoDB 查找项目,包括来自其他引用集合的数据
问题描述
我有以下型号:
富
[{
a: string
b: string,
c: [ObjectId, ref: Bar]
}]
酒吧
[{
name: string
}]
现在,查询条件包含 2 个参数:q = 任意字符串和t = 任意字符串。
目标是找到 Foo 项目,其中:
Foo[a] OR Foo[b] 包含 q 或 Foo[c] 包含 Bar[name] 包含 t。q 可以定义也可以不定义,t 可以定义也可以不定义。
我还需要包括limit、skip和sort。
简单的 Foo.find(conditions) + populate and match在这里不起作用。我猜聚合在这里可以工作,但我还不熟悉聚合。非常感谢任何帮助。
解决方案
您可以使用多文本索引来支持对字符串内容的文本搜索查询。
db.Foo.createIndex(
{
a: "text",
cb: "text"
}
)
例如,您可以使用以下查询从列表“mongodb”、“javascript”和“html”中查找包含任何术语的所有 Foo:
db.Foo.find( { $text: { $search: "mongodb html javascript" } } );
推荐阅读
- mysql - 如何删除存在重复条目的特定条目
- vba - 有没有办法开始在某张幻灯片上运行宏
- android - 导航到新活动时,Android Retrofit 连接上的流意外结束
- flutter-web - 得到“抛出另一个异常:'minified:bV的实例
'" 在 web (localhost) 上运行颤振应用程序时 - c# - 收到错误“子报表的数据检索失败,'Subreport1'”
- javascript - NetSuite - 自定义字段 - 分配给地址簿但无法使用 JS 访问
- ember.js - Ember Octane 如何清除表单错误?
- callback - 有没有办法检查 Intent 共享的回调?
- swift - 快速将注释从一个视图传递到另一个视图
- python - 使用索引在列表中搜索 N 个数字并返回索引