0

したがって、次のようなオブジェクトの配列があります。

"coordinates":[
   {
      "action":"charge",
      "position":{
         "city":"City A"
      }
   },
   {
      "action":"charge",
      "position":{
         "city":"City B"
      }
   },
   {
      "action":"discharge",
      "position":{
         "city":"City C"
      }
   },
   {
      "action":"discharge",
      "position":{
         "city":"City D"
      }
   },
   (...)
]

この配列には N 個のオブジェクトがあるため、配列内のオブジェクトの合計はわかりません。

私の質問は、座標配列のオブジェクト位置から最初と最後の都市を照会するにはどうすればよいですか? 私はこのようなことをしていました:

db.find({
        'coordinates.0.position.city': city_first_name, 
        'coordinates.position': {'$elemMatch': {'city': city_last_name}
    }, 
    {
        'coordinates.$.position': {'$slice': -1}})
    })

しかし、それは本当にうまくいきませんでした。最初の位置を取得しますが、任意のオブジェクトの任意の部分にある任意の要素を取得します。集計を使用する必要がありますか、それとも検索を使用する別の方法がありますか?

助けてくれてありがとう。

4

1 に答える 1