2016-11-10 4 views
0

マイドキュメント:

{ 
    "_id" : ObjectId("5824a9472e94e0995d3b0f0c"), 
    "full_name" : "Kelly Denise Benavides", 
    "aliases" : [ 
     "Kelly D Benavides", 
     "Kelly Benavides" 
    ] 
} 

私は、ユーザーが「ケリーDベナビデス」を入力した場合、文書を検索し、文書を返したいと思っています。私は使用しようとしました:

$person = Person::where('aliases', 'Kelly D Benavides')->first(); 

正しい方法は、elemMatchを使用していますが、構文上明確ではないと思います。すべてのポインタ?

答えて

1

方法#01

db.collection.find(
    { aliases: { $elemMatch: { "Kelly D Benavides" } } } 
) 

方法#02

db.collection.find({"aliases":{$elemMatch:{"$in":["Kelly D Benavides"], "$exists":true}}}) 


Person::where('aliases', 'elemMatch', array('Kelly D Benavides'))->first(); 

Person::where('aliases', 'all', ['Kelly D Benavides'])->first(); 
+0

感謝。 db.collection.find({"aliases":{$ elemMatch:{"$ in": "Kelly D Benavides"、 "$ exists":true}}})はうまく動作します。しかし、私がPerson ::を実行しようとすると、( 'エイリアス'、 'elemMatch'、配列( 'Kelly D Benavides')) - > first(); '$ elemMatchにはオブジェクトが必要です'というメッセージが表示されます – kratos

関連する問題