我的数据库中有 mongo 集合:
[
{
"_id": "59955bb0cd522a00bcaab08c",
"lang": "en",
"__v": 0,
"message_subsets": [
{
"identifier": "errors",
"_id": "59955bb0cd522a00bcaab08d",
"messages": [
{
"identifier": "invalid",
"message_text": "$FIELD$ is invalid",
"_id": "59955bb0cd522a00bcaab091"
},
{
"identifier": "empty",
"message_text": "$FIELD$ is required",
"_id": "59955bb0cd522a00bcaab090"
}
]
}
]
},
{
"_id": "59955bb0cd522a00bcaab08c",
"lang": "ru",
...
]
它是由 Mongoose 模式构建的:
const MessageSchema = new mongoose.Schema({
identifier: {
type: String,
unique: true,
required: true,
trim: true
},
message_text: {
type: String,
required: true,
trim: true
}
});
const MessageSubsetSchema = new mongoose.Schema({
identifier: {
type: String,
unique: true,
required: true,
trim: true
},
messages: [MessageSchema]
});
const LangMessageSetSchema = new mongoose.Schema({
lang: {
type: String,
unique: true,
required: true,
trim: true
},
message_subsets: [MessageSubsetSchema]
});
我想从 message_subsets
数组项中检索所有具有 "identifier": "errors"
的 messages
(如果其父项具有 "lang": "en"
)。
因为我对 mongoose 和 mongo 有点陌生,所以我坚持了下来!您能帮助我以正确的方式进行数据查询吗?谢谢。
最佳答案
这应该有效:
Collection.find({'messages.message_subsets.identifier':'errors', 'lang': 'en'}, {'messages': 1})
关于javascript - 如何在 Mongoose 中检索子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45734429/