如何在对象数组中搜索对象 属性?猫鼬,MongoDB

How To Search An Object Property in An Array of Objects? Mongoose, MongoDB

编辑: 我已经解决了我的问题。解决方案在评论中。

我试图允许用户 link 其他帐户到他们在我的应用程序上的主要帐户。当他们转到 link 帐户时,我想确保他们尝试 link 的帐户尚未被其他用户 link 编辑。

我似乎无法获得查询权限,无法在我的数据库中搜索任何拥有 linked 帐户的用户。我已经成功实现了创建新 linked 帐户的功能,只需完成确保它尚未被占用。

我当前的查询如下(其中 platformID 和平台在请求中正确传递并且确实已经存在于 linkedAccounts 数组中的数据库中):

const profileExists = await User.findOne({linkedAccounts: {platformUserIdentifier: platformID, platform: platform}})

用户方案:

const userSchema = mongoose.Schema(
  {
    username: {
      type: String,
      required: true,
    },
    email: {
      type: String,
      required: true,
      unique: true,
    },
    password: {
      type: String,
      required: true,
    },
    pic: {
      type: String,
      required: true,
      default:
        "https://icon-library.com/images/anonymous-avatar-icon/anonymous-avatar-icon-25.jpg",
    },
    linkedAccounts: [
      {
        platformUserIdentifier: String,
        platform: String
      }
    ],
  },
    {
      timestamps: true,
    }
);

我觉得我的查询是正确的,但继续 return null。我已经仔细检查以确保它与请求中的变量无关,并且我还附上了我的数据库的屏幕截图以证明我正在搜索的内容存在。

MongoDB image

我遇到了障碍,非常感谢任何人的帮助。

提前致谢。

你可以用 mongodb 做到这一点,但在猫鼬中你必须找到数组对象中的每个键

const profileExists = await User.findOne({
  "linkedAccounts.platformUserIdentifier" : platformID,
  "linkedAccounts.platform" : platform
})

mongodbhttps://mongoplayground.net/p/NPGcUJl5MLw

的游乐场

我需要用来查找帐户的代码如下:

const profileExists = await User.findOne({
     linkedAccounts: {$elemMatch: {platformUserIdentifier: platformID, platform: platform}}
  })

此 returns User 配置文件在其 linkedAccounts

中具有上述 platformIDplatform