【问题标题】:How can I query whether each element inside an array match a collection field如何查询数组中的每个元素是否与集合字段匹配
【发布时间】:2018-03-24 17:26:00
【问题描述】:

我正在使用 mongodb 来保存用户信息。该集合中有一个userId 字段。我在我的应用程序中获得了许多 userIds 并保存为一个数组。我需要查询该数组中的所有 userIds 是否存在于集合中。如果没有,找出所有丢失的。是否有一个查询命令可以工作?我不想一一查询userId。那么实现这一目标的更好方法是什么?

用户集合非常简单,如下图,没有嵌套数据。

userId: String
name: String
gender: String
phone: String

例如,我有一个 ID 数组 [1, 2, 3]。我必须运行 3 次查询来检查这些是否是匹配三个 id 的用户。

【问题讨论】:

  • 请提供一个示例数据集,以了解您在集合中是否有嵌套数组。

标签: mongodb


【解决方案1】:

这可以通过$in 运算符来完成。

例子:

db.users.find( {userId: { $in: [ 1, 2, 3 ] } } );

一旦您将用户拉回来,您就可以在应用层确定哪些用户没有回来。

【讨论】:

  • 我想这个查询会发现1,2,3数组中是否有userId。但是我的问题是我有一个userId数组,我想知道每个id是否存在于数据库中。比如我有1,2,3,我需要检查是否有id为1,2,3的用户。
  • $in 运算符在数据库中执行 OR 操作。你真的试过了吗?这将返回 userId 为 1 OR 2 OR 3 的所有文档。通过检索所有这些文档并将其与您最初提供给查询的数组进行比较,您应该能够确定哪些用户已经在您的数据库中。
  • 是的,我认为你是对的。我已经接受了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2021-05-06
  • 2014-06-28
  • 2020-02-06
  • 1970-01-01
  • 2013-04-03
  • 2022-01-20
相关资源
最近更新 更多