3

私は次のようなコレクションを持っています。

{
 "name" : "pqr" ,
 "loc" : 
   [ 
    {"area" : "c" , "country" : "d"},
    {"area" : "w" , "country" : "r"}
   ]
}

配列locの最初の要素のみに一致するように一致させたい

つまり、

  1. 面積をcまたは国dとして指定すると、ドキュメントが返されます。
  2. 面積をwとして、国をrとして指定すると、要素は返されません

mongo配列の最初の要素にのみ一致します

これはmongoで可能ですか?

誰かがplzの返信を知っている場合

ありがとう

4

1 に答える 1

3

したがって、最初に一致した要素のみを返したい場合は、次のlimit(n)ようなクエリを使用する必要があります。

1. 地域を c または国 d として指定すると、ドキュメントが返されます。

db.items.find( { $or : [ {"loc.area": "c" } , 
                         {"loc.country ": "d" } ] } ).limit(1);

2. 地域を w として、国を r として指定し、要素を返さない

db.items.find( { $or : [ {"loc.area":  { "$ne" : "w" } }, 
                         {"loc.country": { "$ne" : "r" } } ] } ).limit(1);

.0.ネストされた配列の最初の要素のみを検索する場合は、 ->を追加して位置演算子を使用して実行できますloc.0.area

更新:最初にあなたの質問を誤解しました。loc.0.areaを探していることがわかりました。

于 2011-04-13T09:48:40.070 に答える