【问题标题】:Find documents with matching the field's object value查找与字段的对象值匹配的文档
【发布时间】:2018-02-12 15:37:34
【问题描述】:

我的 mongodb 表有一个字段,其对象值类似于

_id : ObjectId("59ad227e191cc3a4c33ade07")
user_info : {"first_name": "Shraddha", "last_name": "Banerjee", "Zip": "90242", "City": "SantaBarbara"}

我想查找邮编为 90242 的用户。

我试着这样做:

$users = User::where('user_info.Zip','=', 90242)->get();

但这给了我空的结果。 如何实现?

【问题讨论】:

  • 先使用$info = $user_info['Zip'];,然后使用$users = User::where($info,'=', 90242)->get(); 让我知道这是否有效!
  • 你试过了吗??
  • 嗨@Hiren,它不起作用。它是一个存储在 user_info 中的对象。它给出错误:未定义的变量:user_info。好吧,我也尝试过使用 $info = "user_info.Zip"; $users = User::where($info,'=', 90242)->get();
  • $user_info 我说,你需要把你的变量带到json对象的来源!
  • 我只有来自我的 POST 请求的 Zip。这个 JSON 是存储在我的 mongoDB 集合中的文档。这是我在 MySQL 中实现的: $users = User::where('user_info->Zip', $zip) ->where('user_info->DateOfBirth', 'like', '%'.$date_of_year. '%') ->get(['user_info', 'user_id']);但是使用 mongo 无法获取它..

标签: mongodb laravel connection jenssegers-mongodb


【解决方案1】:

试试这个,

$users = User::where('user_info.Zip', '90242')->get();

【讨论】:

    【解决方案2】:

    您的 zip 数据似乎是存储的字符串,当您查询它时,您使用的是整数。

    $users = User::where('user_info.Zip','=', '90242')->get();
    

    在查询时尝试将 zip 转换为字符串

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      相关资源
      最近更新 更多