如何通过索引
获取数组对象示例:
{ "_id" : 1, "name" : "bob", colors: [ "red", "blue", "green"] }
{ "_id" : 2, "name" : "jim", colors: ["yellow", "black" ] }
我的查询:类似
db.users.find({name: "bob"}, {colors: 2})
结果:
{ "_id" : 1, "name" : "bob", colors: "blue" }
答案 0 :(得分:1)
您可以尝试以下聚合
db.collection.aggregate([
{ "$match": { "name": "bob" }},
{ "$project": {
"name": 1,
"color": { "$slice": [ "$colors", 1, 1 ] }
}},
{ "$unwind": "$color" }
])
以上查询将返回
[
{
"_id": 1,
"color": "blue",
"name": "bob"
}
]
答案 1 :(得分:0)
您可以使用$arrayElemAt
获取数组中的第n项:
db.users.aggregate([
{$match: {name: "bob"}},
{$project: {name: "$name", color: {$arrayElemAt: ['$colors', 1]}}}
])
请注意,索引是从0开始的。