node.js - 查询Mongoose中的多个子文档元素

标签 node.js mongodb mongoose

我似乎无法使以下查询正常工作:

Group.find({ $or: [ {'groupOwner': req.user._id }, { 'subscribers.user': req.user._id, 'subscribers.level': 'owner' } ] }, 'groupName', { sort: ['groupName', 'ascending'] }, function(err, groups) {

我的模式有一个组,订阅者作为一个子文档数组。我想找到 groupOwner 与传递的用户 ID 匹配的所有组(工作正常),以及 subscribers.user = req.user._id AND subscribers.level = 'owner'

写入的查询返回所有子文档,其中 subscribers.user = req.user._id 或有一些订阅者级别 = 'owner'。明确地说,我只想要子文档具有 subscribers.user = req.user._id 并且相同的子文档具有 subscribers.level = 'owner' 的组。

我已经尝试了所有方式的 $and 和 $elemMatch,但就是无法得到它。感谢您的帮助!

最佳答案

$elemMatch 是匹配同一数组元素中的多个字段时的正确运算符;您的查询应如下所示:

Group.find(
  { $or: [ 
    { groupOwner: req.user._id }, 
    { subscribers: { $elemMatch: { user: req.user._id, level: 'owner' }}}
  ]}, 
  'groupName', 
  { sort: ['groupName', 'ascending'] }, 
  function(err, groups) { ...

关于node.js - 查询Mongoose中的多个子文档元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442323/

相关文章:

node.js - Mongoose - 灵活的领域

node.js - 同时利用 GraphQL 和 Mongoose

node.js - 客户端的Socket.IO

javascript - 背包示例 "with-typescript"无法编译

node.js - 如何从 Mongodb 数据库中减去 ISOFormat [2018-08-11T12 :23:55. 627Z] 的时间?

javascript - mongo游标findOne

node.js - 错误 [ERR_HTTP_HEADERS_SENT] : Cannot set headers after they are sent to the client Registering user in node JS

javascript - 如何为每个用户处理多个 Node.js 服务器之间的通信?

javascript - 如果向第三方 API 发出错误请求,Node JS Express 如何发送 404 错误?

mongodb - 如何在 MongoDB 命令提示符处打印变量?