2015-12-08 2 views
3

Я использую библиотеку jenssegers/laravel-mongodb в проекте. У меня есть коллекция, в которой создается поддокумент с другими деталями. Теперь я должен выполнить поисковый запрос для поиска в поддоке коллекции. Поддокумент - это product_data, в котором я хочу искать в нем индекс 6. Я хочу найти в нем название страны. Как я могу сделать this.The структура коллекции выглядит следующим образом:Как внедрить поисковый запрос в поддокумент коллекции из mongodb с помощью библиотеки jenssegers/laravel-mongodb

{ 
    "_id": ObjectId("564d32f191c1cb1f087d7c71"), 
    "userid": "55c487a1083f11aa1b8b4567", 
    "shopid": "anotherstore", 
    "postedby": null, 
    "purpose": "sell", 
    "cat_ids": [ 
     "TDC00-001-001", 
    ], 
    "postdate": "2015-11-19", 
    "desc": "T-SHIRT", 
    "thumb": "http://test.local/uploads/product_img/prod-8yKsMHC2-1447895652.jpg", 
    "product_data"▼: { 
     "1": "2015-11-19", 
     "2": "anotherstore", 
     "3": "T-SHIRT", 
     "4": "1245", 
     "6": "Styling features include twin needle stitching for neatness and strength on the collar, sleeve and h", 
     "5": "US", 
     "6": "US" 
    } 
} 

Я попытался с некоторыми запросами, которые ищут, но не получил никакого успеха. Это:

$country=Array(
    [0] => Australia 
) 
$country = Products::whereIn('product_data[6]', $country)->get(); 
or 
$country = Products::where('books', 'elemMatch', array([6] => $country))->get(); 

Если кто-то знает, пожалуйста, помогите.

ответ

3

с запроса для поддокументов выглядит в Монго:

db.products.find({'product_data.6':'US'}); 

вам просто нужно, чтобы воссоздать эту структуру в вашем коде:

$country = 'US'; 
$queryFilter = ['product_data.6'=>$country]; 
Products::where($queryFilter)->first(); //or get whatever. 

, если вы хотите найти в массиве стран, в которых вы должны будете использовать whereIn метод

$countries = ['US','SPAIN']; 
$results = Products::whereIn('product_data.6',$countries)->get(); 
+0

Эй, спасибо, его работа .. – Mukesh

+0

отлично не стесняйтесь t мой ответ тогда :) – Cptmaxon

+1

Есть ли способ поиска, если $ country будет массивом. Значит что-то вроде этого. $ Страна => Массив ( [0] => Абхазия [1] => Афганистан ) – Mukesh

Смежные вопросы