所以,如果我有这样的事情:
{
_id:'123',
parts: ['One','Two','Three']
}
所以,如果我想要零件[0],是否有可能为此进行查找?
类似于:
db.stories.find({_id:'123', part:{$eq:0}})
我知道上面的内容是错误的,但我想知道如果可能(与对象/数组键相关的标准)进行正确查找是否更有效,或者只是做广泛的查找和去从那里(即使用没有对象/文件的标准。
答案 0 :(得分:1)
您可以使用$project
和$arrayElemAt
来获取数组中的第一个元素
db.stories.aggregate([
{
$match: {_id: '123'}
},{
$project: {part: {$arrayElemAt: ['$parts',0]}}
}
])
答案 1 :(得分:1)
如果你想从parts数组中获得0个索引元素,你可以用这种方式编写
db.sample.find({ _id : "123" } , { parts : { $slice : [0 , 1] } } )