簡體   English   中英

Mongodb從收藏中搜索

[英]Mongodb Search from Collection

我需要在mongodb中搜索集合

'food_name' => 'fish'

  'room_features' => 
  array (
    0 => 'Shower',
    1 => 'Hairdryer',
  ),

我嘗試了以下代碼。 但是結果不正確。 我認為不允許多個$eq (數組中的索引相同)。

array (
  '$and' => 
  array (

    array (
      'food' => 
      array (
        '$elemMatch' => 
        array (
          'food_name' => 
          array (
            '$eq' => 'fish',
          ),
        ),
      ),
    ),

    array (
      'room' => 
      array (
        '$elemMatch' => 
        array (
          'room_features' => 
          array (
            '$elemMatch' => 
            array (
              '$eq' => 'Shower'
              '$eq' => 'Hairdryer'

            ),
          ),
          'roomrate' => 
          array (
            '$eq' => new MongoInt32(2500),
          ),
        ),
      ),
    ),


  ),
)

這是我需要搜索的文檔。

array (
  '_id' => new MongoId("59670aca7fafd8342e3c9869"),
  'subcat_name' => 'Test',
  'place' => '',
  'description' => '',
  'created_date' => '1499970060',
  'created_by' => 'Admin',
  'openingtime' => '',
  'closingtime' => '',
  'hotel_class_id' => '594245f67fafd87e243c986a',
  'hotel_type_id' => '594244177fafd884563c9869',
  'latitude' => '0',
  'longitude' => '0',
  'dist_id' => '5911966a7fafd8c83c3c986a',
  'cat_id' => '58fb230e7fafd883183c986d',
  'featured' => '0',
  'visited' => new MongoInt64(5),
  'subcat_slug' => 'test-trivandrum-1',
  'image' => NULL,
  'food' => 
  array (
    0 => 
    array (
      'food_id' => '149992634012642164',
      'region_id' => '5944ba947fafd883333c9869',
      'food_name' => 'fish',
      'type' => 'veg',
      'rate' => '100',
    ),
    1 => 
    array (
      'food_id' => '14999366891994980639',
      'region_id' => '595c75c17fafd835173c986c',
      'food_name' => 'curry',
      'type' => 'veg',
      'rate' => '1000',
    ),
  ),
  'room' => 
  array (
    0 => 
    array (
      'room_id' => '14999346791721342880',
      'roomtype' => 'DELUXE KING ROOM1',
      'roomrate' => new MongoInt64(2500),
      'image' => 'beach_icon33.png',
      'room_features' => 
      array (
        0 => 'Shower',
        1 => 'Hairdryer',
      ),
    ),
    1 => 
    array (
      'room_id' => '14999346901389554873',
      'roomtype' => 'DELUXE KING ROOM new',
      'roomrate' => new MongoInt64(4000),
      'image' => 'beach_icon34.png',
      'room_features' => 
      array (
        0 => 'Shower',
        1 => 'Bathrobe',
      ),
    ),
  ),
)

請給我一種從數組中搜索多個項目的替代方法。 提前致謝。

我認為如果您要查詢列表,可以在查詢中添加列表,請嘗試此操作

{
    "food" : {
        "$elemMatch": {
            "food_name" : "fish"
        }
    },
    "room" : {
        "$elemMatch": {
            "room_features" : ["Shower", "Hairdryer"]
        }
    },
}

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM