【发布时间】:2021-07-25 05:55:54
【问题描述】:
我有一堆文档,每个文档都是这样格式化的:
{
"faculty": "Some Faculty",
"students": [
{
"id": "51230867123",
"age": "21",
"name": "awdawdawdawawd"
},
{
"id": "0217356102",
"age": "22",
"name": "awdawd"
},
...
]
}
我已经使用 insertMany([...]) 将这些文档插入到单个 MongoDB 集合中,所以现在我的 students 表如下所示:
{
"faculty": "Some Faculty",
"students": [
{
"id": "51230867123",
"age": "21",
"name": "John Doe"
},
{
"id": "0217356102",
"age": "22",
"name": "Jane Doe"
},
...
]
},
{
"faculty": "Other Faculty",
"students": [
{
"id": "1240876124",
"age": "21",
"name": "Jimmy Doe"
},
{
"id": "2309857120578",
"age": "22",
"name": "Johnny Doe"
},
...
]
},
...
我非常想知道如何对某些子文档执行find 查询,特别是students。例如,我想find all students.name 和students.age > 23。我尝试了很多查询,包括db.students.find({"students.age": {$gt: /.*B.*/}}, {_id: 0, "students.name": 1}),但这样的查询总是返回至少一个学生满足条件的整个文档。我想查询个别学生。这可以使用find(没有aggregate)吗?
使用aggregate,可以使用unwrap,这正是我需要做的。不过,我希望有一些技巧可以与 find 一起使用来实现这种行为。
【问题讨论】:
标签: mongodb subdocument