gpt4 book ai didi

mongodb - 在子文档中使用 db.collection.find 查询

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

有没有办法使用 db.collection.find() 查询子文档中的特定值并找到匹配的那些文档。例如:

{ { '乔':{eyecolor:'棕色'}, { '玛丽':{eyecolor:'蓝色'},....

我想返回所有眼睛颜色为蓝色的人的名字。

最佳答案

您需要指定值的完整路径才能进行搜索:

db.people.find({ "Joe.eyecolor" : "brown" })

您不能切换到人员数组而不是您现在使用的关联数组样式,因为无法只返回匹配条件的数组元素。您可以使用 $elemMatch 返回 first 匹配项,但这不太可能是您想要的。或者,您仍然可以使用数组,但您需要在客户端代码(而不是数据库)中进一步过滤数组。

您也许可以使用聚合框架,但它无法有效地使用索引,因为您需要$unwind 整个数组,然后进行过滤、暴力破解。而如果包含的数据比较复杂,使用AF进行投影需要手动指定所有字段,就显得有点麻烦了。

为了最有效地执行您正在显示的查询,您不需要使用子文档,而是将人员作为单独的文档放置:

{ 
name: "Joe",
eyecolor: "brown"
}

然后,您可以像这样进行简单的搜索:

db.people.find({eyecolor: "brown"})

关于mongodb - 在子文档中使用 db.collection.find 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249722/

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