如何从 mongodb 中的嵌套数组中的字段名称 select?
How to select from field name from nested arrays in mongodb?
我有一个包含嵌套数组的文档,但我不知道如何从字段中 select。
我想要 select 所有 "components" 具有 "mast" 的文档。
我试过了。
db.sites.find({"components": "mast" }).pretty();
db.sites.find({"components.$": "mast" }).pretty();
db.sites.find({"components.$.$": "mast" }).pretty();
db.sites.find({"components.$.$.mast": {$exists: true} }).pretty();
db.sites.find({"components.$.mast": {$exists: true} }).pretty();
db.sites.find({"components.mast": {$exists: true} }).pretty();
以及其他一些失败的尝试。
{
"_id" : ObjectId("23456yujbvfdfg"),
"d": 1234567,
"components" : [
[
"mast",
{
"foo":"bar"
}
],
[
"commsbox",
{
"BLARN": "bAAA"
}
]
]
}
我的尝试只返回空白结果。
您可以使用 $elemMatch
db.sites.find(
{ "components": { $elemMatch: { $elemMatch: {$eq:"mast"} } }}
)
这应该有效
db.sites.find({
"components": {
$elemMatch: {
$elemMatch: { $in: ['mast'] }
}
}
})
如果您将组件维护为数组,那么您的查询应该如下所示
db.test.find({ "components": { $elemMatch: { $elemMatch: {$eq:"mast"} } }})
我已经根据您共享的架构发布了解决方案,但我确定架构需要更改
我有一个包含嵌套数组的文档,但我不知道如何从字段中 select。
我想要 select 所有 "components" 具有 "mast" 的文档。
我试过了。
db.sites.find({"components": "mast" }).pretty();
db.sites.find({"components.$": "mast" }).pretty();
db.sites.find({"components.$.$": "mast" }).pretty();
db.sites.find({"components.$.$.mast": {$exists: true} }).pretty();
db.sites.find({"components.$.mast": {$exists: true} }).pretty();
db.sites.find({"components.mast": {$exists: true} }).pretty();
以及其他一些失败的尝试。
{
"_id" : ObjectId("23456yujbvfdfg"),
"d": 1234567,
"components" : [
[
"mast",
{
"foo":"bar"
}
],
[
"commsbox",
{
"BLARN": "bAAA"
}
]
]
}
我的尝试只返回空白结果。
您可以使用 $elemMatch
db.sites.find(
{ "components": { $elemMatch: { $elemMatch: {$eq:"mast"} } }}
)
这应该有效
db.sites.find({
"components": {
$elemMatch: {
$elemMatch: { $in: ['mast'] }
}
}
})
如果您将组件维护为数组,那么您的查询应该如下所示
db.test.find({ "components": { $elemMatch: { $elemMatch: {$eq:"mast"} } }})
我已经根据您共享的架构发布了解决方案,但我确定架构需要更改