【问题标题】:Mongodb Search from CollectionMongodb 从集合中搜索
【发布时间】:2017-07-14 06:24:46
【问题描述】:

我需要在 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',
      ),
    ),
  ),
)

请给我另一种从数组中搜索多个项目的方法。 提前致谢。

【问题讨论】:

  • PHP 数组表示法通常不能很好地表示更广泛的受众的数据。甚至转储格式通常也不能给出准确的描述。相反,您应该发布从“mongo shell”查看时显示的数据。这为更广泛的受众理解提供了准确的描述。此外,在使用 PHP 时,最好在问题上实际包含该标签,而不是让人们猜测。

标签: php arrays mongodb multidimensional-array mongodb-query


【解决方案1】:

我想如果你想查询列表,你可以在查询中添加列表, 试试这个

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 2021-04-17
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多