猫鼬在对象数组中查找对象

时间:2021-01-14 14:10:27

标签: node.js mongodb express mongoose

我是 mongoose 的新手,我正在尝试通过代码 [user.test.test1.code] 找到用户,知道吗?

型号:

const userSechema = new mongoose.Schema({     
name: {
    type: String,
    required: true
  },
     test: [{}],
 })

数据:

{
    "_id": {
        "$oid": "600020ab34742c2d34ae45e5"
     },
    "test": [{
       "test1": {
            "code": 11111
        },
       "test2": {
          "code": 22222
        }
      }]
   "name": "daniel"
}

查询:

let regex = new RegExp(req.query.searchUserKey, 'i')
const users = await User.find({ $or: [{'name': regex },{'test.test1': { code : regex} }]})

-- 解决方案--

谢谢你们,两个答案都适合我

1 个答案:

答案 0 :(得分:1)

就像 "test.test1.code": 418816 那样简单地进行查找查询,如下所示:

db.collection.find({
  "test.test1.code": 418816
})

此查询将为您提供所有存在 test.test1.code 且值为 418816 的文档。

请注意,此查询返回整个文档,而不仅仅是将子文档放入数组。但我假设您的帖子 user 是存在字段 name 的文档。

示例here