以下是MongoDB中名称为“ auto_sales”的集合,我想从作为对象数组的数据中选择“ sales”的所有值。
Collection-
{
"name" : "auto_sales",
"data" : [
{ "sales" : 10,
"temp" : 50 },
{ "sales" : 9,
"temp" : 51 },
{"sales" : 8,
"temp" : 55 },
{"sales" : 57,
"temp" : 7 },
{"sales" : 58,
"temp" : 8 }
] }
是否有任何查询要从“数据”中获取“销售”的所有值。
最佳答案
您是说这个意思吗?
db.collection.find(
{},
{ "data.sales": 1 }
)
给
{
"_id" : ObjectId("5e55400d22139e9b31aa786e"),
"data" : [
{
"sales" : 10.0
},
{
"sales" : 9.0
},
{
"sales" : 8.0
},
{
"sales" : 57.0
},
{
"sales" : 58.0
}
]
}
或者更确切地说:
db.collection.aggregate([
{
$project: {
sales: {
$reduce: {
input: "$data",
initialValue: [],
in: { $concatArrays: ["$$value", ["$$this.sales"]] }
}
}
}
}
])
要么
db.collection.aggregate([
{
$project: {
sales: {
$map: {
input: "$data",
in: "$$this.sales"
}
}
}
}
])
给
{
"_id" : ObjectId("5e55400d22139e9b31aa786e"),
"sales" : [
10.0,
9.0,
8.0,
57.0,
58.0
]
}