Javascript 如何在Mongoose中检索子文档
我的数据库中有mongo集合:Javascript 如何在Mongoose中检索子文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我的数据库中有mongo集合: [ { "_id": "59955bb0cd522a00bcaab08c", "lang": "en", "__v": 0, "message_subsets": [ { "identifier": "errors", "_id": "59955bb0cd522a00bcaab08d",
[
{
"_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",
...
]
这是由猫鼬模式构建的:
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\u子集
数组项中检索所有消息
,该数组项具有“标识符”:“错误”
,如果其父项具有“lang”:“en”
。
因为我对猫鼬和猫鼬有点陌生,所以我坚持这样做!!!你能帮我以正确的方式进行数据查询吗?谢谢。这应该可以:
Collection.find({'messages.message_subsets.identifier':'errors', 'lang': 'en'}, {'messages': 1})
这应该起作用:
Collection.find({'messages.message_subsets.identifier':'errors', 'lang': 'en'}, {'messages': 1})
是的,但不完全是这样。我只想检索消息数组。@bashkovpd我已更新。这叫投影:嗯。。。也许我做错了什么,但该查询只返回主父元素的_id(其中指定了
lang
)。由于使用了mongoose,您可以直接在模式上进行查询,使用MessageSchema.find({'message\u subsets.identifier':'errors','lang':'en'),{'messages':1})
是,但不完全正确。我只想检索消息数组。@bashkovpd我已更新。这叫投影:嗯。。。也许我做错了什么,但该查询只返回主父元素的_id(其中指定了lang
)。由于使用了mongoose,您可以直接在模式上进行查询,使用MessageSchema.find({'message\u subsets.identifier':'errors',lang:'en',{'messages':1})