findOne
の代わりに$match
を実行すると、集約を使用できます。あなたが位置1にある項目を$slice
と-1できるようにMongoDB 3.2
は、$slice
は、凝集がある:
MongoDBの< 3.2
db.my_collection.aggregate([{
$match: { my_query: 'is_awesome' }
}, {
$project: {
my_query: 1,
firstElement: { $slice: ["$big_array", 1] },
lastElement: { $slice: ["$big_array", -1] }
}
}])
使用できるように、$slice
は、凝集において使用されカント$unwind
と$group
、MongoDBの3.0で動作している次
db.my_collection.aggregate([{
$match: { my_query: 'is_awesome' }
}, {
$unwind: "$big_array"
}, {
$group: {
_id: "$_id",
my_query: { $first: "$my_query" },
firstElement: { $first: "$big_array" },
lastElement: { $last: "$big_array" }
}
}])
感謝です!少なくともMongoDBバージョン3.1でのみ利用可能ですか? – BNilsou
mongodbから動作するはずです。2.4 –
'' 'mongo --version'''私に3.0.8を与えてください。それから私はあなたのトリックで、次のエラーを持っている: は '' 'アサート:コマンドが失敗しました:{ "ERRMSGを": "例外:無効な演算子 '$スライス'"、 "コード":15999、 "OK":0 }:集合体は エラーを失敗:コマンドが失敗しました:{ "ERRMSG": "例外:無効な演算子 '$スライス'"、 "コード":15999、 "OK":0 を}:集計failed''' はなかったです私は何かが欠けている? – BNilsou