在数组猫鼬中查找数组中的元素

find element in array within array mongoose

我有这个数据:

[
  {
    contacts: [ [Object] ],
    _id: 614a1301a926d73628d791fe,
    username: 'erick',
    socketId: 'OB8uqmHnsGPKC3gcAAAB'
  },
  {
    contacts: [ 
       contacts: [ [Object] ],
       _id: 614a1301a926d73628d791fe,
       username: 'erick',
       socketId: 'OB8uqmHnsGPKC3gcAAAB'
    ],
    _id: 614a1306a926d73628d79204,
    username: 'tachancka',
    socketId: 'cN333_zn8r48K_0tAAAB'
  }
]

我需要在 'tachancka' 个联系人中找到 'erick' 的用户名。 我已经尝试了几种方法来做到这一点,但 none 对我有用,返回 null。

例如:

User.findOne({contacts: {$elemMatch:{'username': 'erick'}}}) 

或者:

User.findOne({'contacts.username': 'erick'})

请参考此处示例:https://mongoplayground.net/p/Np_MdrubPgT

你可以使用

db.User.find({
  username: "tachancka",
  "contacts.username": "erick"
})

当你有对象数组时,如果你想匹配对象中的所有字段,那么我们使用 $elemMatch,在你的情况下,我觉得用户名不是联系人数组的一部分,因此你不会使用 $elemMatch