【发布时间】:2016-10-30 17:12:31
【问题描述】:
我有一个类似的收藏:
{
"_id" : ObjectId("57dc2b63add5c5e91f185fe0"),
"level" : 2,
"profili" : [
{
"_id" : ObjectId("507f1f77bcf86cd799439011"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498b"),
"costopag" : 1,
"pagmax" : 10,
"pagmin" : 1
},
{
"_id" : ObjectId("507f191e810c19729de860ea"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498b"),
"costopag" : 0.5,
"pagmax" : 100,
"pagmin" : 11
}
],
"__v" : 0
},
{
"_id" : ObjectId("57dc39945aec26b303053dd7"),
"level" : 2,
"profili" : [
{
"_id" : ObjectId("507f1f77bcf86cd799439012"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498b"),
"costopag" : 10,
"pagmax" : 100,
"pagmin" : 11
}
]
},
{
"_id" : ObjectId("57e7ff05a0ef6d07c3048d7f"),
"level" : 2,
"profili" : [
{
"_id" : ObjectId("507f1f77bcf86cd799439013"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498c"),
"costopag" : 0.5,
"pagmax" : 10,
"pagmin" : 1
}
]
},
{
"_id" : ObjectId("57e7ff54a0ef6d07c3048d81"),
"level" : 2,
"profili" : [
{
"_id" : ObjectId("507f1f77bcf86cd799439014"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498c"),
"costopag" : 5,
"pagmax" : 10,
"pagmin" : 1
}
],
"__v" : 0
}
我需要搜索一个具有特定“配置文件”的文档。 如果我执行这个查找:
database.Utente.find({
"level":2,
profili: {
$elemMatch:{
idprofilo: '57fe3c51569b5c0afb88498b',
pagmin: {$lte:2},
pagmax: {$gte:2}
}
}
})
结果是:
{
"_id" : ObjectId("57dc2b63add5c5e91f185fe0"),
"level" : 2,
"profili" : [
{
"_id" : ObjectId("507f1f77bcf86cd799439011"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498b"),
"costopag" : 1,
"pagmax" : 10,
"pagmin" : 1
},
{
"_id" : ObjectId("507f191e810c19729de860ea"),
"idprofilo" : ObjectId("57fe3c51569b5c0afb88498b"),
"costopag" : 0.5,
"pagmax" : 100,
"pagmin" : 11
}
],
"__v" : 0
}
如果可能的话,我不会使用 profili.id=507f191e810c19729de860ea,因为它不会应要求做出响应。 我已经读过 .aggregate 和 $project 运算符是否有可能,但我不明白我该怎么做。
【问题讨论】:
标签: mongodb aggregation-framework