Mongoに次のデータモデルがあるとしましょう。
{
_id: ...,
name: "...",
obj: {...},
list: [ ... ],
}
たとえば、私のlist配列は非常に長く、毎回ドキュメント全体を取得したくありません。objだから私はとを取得したいのですnameが、の最後の5つの要素だけを取得しlistます。Mongoでこれをどのように行いますか?pymongoを使用しています。
$sliceオペレーターをお探しだと思います。ドキュメントはこちらです。
探している構文は次のようなものです。
db.coll.find({}, {obj:1, name: 1, list:{$slice: -5}}); // last 5
_idこれにより、デフォルトでフィールドも返されることに注意してください。の前に_id追加したくない場合。これはJS構文ですが、Python構文は非常に近くなります。_id:0obj:1
$slice演算子を使用して配列要素を制限します
GeoLocation.find({},{name: 1, geolocation:{$slice: -5}})
.then((result) => {
res.json(result);
})
.catch((err) => {
res.status(500).json({ success: false, msg: `Something went wrong. ${err}` });
});
ここで、ジオロケーションはデータの配列であり、そこから最後の5つのレコードを取得します。