gpt4 book ai didi

javascript - mongoDB 中的嵌套对象文本搜索

转载 作者:可可西里 更新时间:2023-11-01 09:39:48 25 4
gpt4 key购买 nike

我不确定我将如何解决这个问题:
我想在 mongoDB 集合中搜索并仅返回适合搜索查询的嵌套对象(在所有字段上使用文本搜索)。

集合中的所有文档都具有这种格式:

{
arr: [
{
_id: 1,
name: 'Random',
description: 'Hello world'
},
{
_id: 2,
name: 'World',
description: 'This is a random description'
},
{
_id: 3,
name: 'Random',
description: 'Hi'
}
]
}

在这种情况下,如果我的搜索查询是“世界”,那么结果应该是:

[
{
_id: 1,
name: 'Random',
description: 'Hello world'
},
{
_id: 2,
name: 'World',
description: 'This is a random description'
},
//... objects from other documents in the collection that fits the query
]

如果这在 mongoDB 中是不可能的,是否有任何 JavaScript 库可以实现这一点?非常感谢您的帮助!

最佳答案

有了聚合框架,它可能看起来像这样

db.getCollection('yourCollection').aggregate([
{
$unwind: '$arr'
},
{
$match: {
$or: [
{ 'arr.name': /world/i },
{ 'arr.description': /world/i }
]
}
},
{
$project: {
_id: '$arr._id',
name: '$arr.name',
description: '$arr.description'
}
}
])

这将为您的示例数据生成以下输出:

{
"_id" : 1,
"name" : "Random",
"description" : "Hello world"
}
{
"_id" : 2,
"name" : "World",
"description" : "This is a random description"
}

如果您需要一个包含问题中显示的结果文档的数组,您可以简单地在管道末尾链接一个 toArray() 调用 - 请记住正如 SSDMS 所指出的那样,如果结果集很大,这可能会导致内存消耗增加在评论中。

关于javascript - mongoDB 中的嵌套对象文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410763/

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