mongoose 检查mongoDB中的嵌套数组内是否存在值

mzillmmw  于 2022-11-13  发布在  Go
关注(0)|答案(2)|浏览(214)

我试图检查我作为请求发送的一个值是否已经存在于一个特定用户的数组中。

{
    "_id": "63233972df0f14076e027106",
    "firstName": "mako",
    "lastName": "mako",
    "userName": "mako",
    "email": "mako@gmail.com",
    "friends": [
        "Josh"
    ],
    "__v": 0
}

我正在发送以下请求

{
    "userName": "mako",
    "friend": "Josh"
}

我想检查请求中的“friend”是否已经存在于数据集中,并返回true或false。
我尝试过使用$exists和$in,但语法不正确

const checkFriend = async(req, res, next)=>{
  try {
    const {userName, friend} = req.body
    const check = await User.findOne({userName: userName, $in: {friends: friend}})
    res.send(check)
  } catch (error) {
    
  }
}

我尝试的NodeJS代码,唯一返回任何内容的代码

i34xakig

i34xakig1#

您的逻辑是正确的,但语法问题不大。

const check = await User.find({userName: userName, friends: { $in: [friend] }});
xdyibdwo

xdyibdwo2#

您不需要$in。Mongo将检查整个数组,只要执行以下操作:

const isFound = await User.findOne({ userName: userName, friends: friend }).lean();

if (isFound) {
  // Do something
} else {
  // Do something else
}

相关问题