【问题标题】:Find documents with sub-documents matching both of two (or more) properties查找具有同时匹配两个(或更多)属性的子文档的文档
【发布时间】:2015-06-06 19:36:52
【问题描述】:

在带有 Mongoose 的节点中,我想在集合 Content 中找到一个对象。它有一个名为users 的子文档列表,它具有streamuseradded 属性。我这样做是为了在users.user 字段中获取具有某个用户的_id 属性的所有文档。

Content.find( { 'users.user': user._id } ).sort( { 'users.added': -1 } )

这似乎有效(尽管我不确定.sort 是否真的在这里有效。但是,我想匹配 两个 字段,如下所示:

Content.find( { 'users.user': user._id, 'users.stream': stream } } ).sort( { 'users.added': -1 } )

这似乎不起作用。这样做的正确方法是什么?


这是一个示例文档

{
    "_id" : ObjectId("551c6b37859e51fb9e9fde83"),
    "url" : "https://www.youtube.com/watch?v=f9v_XN7Wxh8",
    "title" : "Playing Games in 360°",
    "date" : "2015-03-10T00:19:53.000Z",
    "author" : "Econael",
    "description" : "Blinky is a proof of concept of enhanced peripheral vision in video games, showcasing different kinds of lens projections in Quake (a mod of Fisheye Quake, using the TyrQuake engine).\n\nDemo and additional info here:\nhttps://github.com/shaunlebron/blinky\n\nThanks to @shaunlebron for making this very interesting proof of concept!\n\nSubscribe: http://www.youtube.com/subscription_center?add_user=econaelgaming\nTwitter: https://twitter.com/EconaelGaming",
    "duration" : 442,
    "likes" : 516,
    "dislikes" : 13,
    "views" : 65568,
    "users" : [ 
        {
            "user" : "54f6688c55407c0300b883f2",
            "added" : 1427925815190,
            "_id" : ObjectId("551c6b37859e51fb9e9fde84"),
            "tags" : []
        }
    ],
    "images" : [ 
        {
            "hash" : "1ab544648d7dff6e15826cda7a170ddb",
            "thumb" : "...",
            "orig" : "..."
        }
    ],
    "tags" : [],
    "__v" : 0
}

【问题讨论】:

  • 您能否在您的收藏中发布一个示例文档。
  • @BatScream 好的,已添加

标签: node.js mongodb subdocument


【解决方案1】:

使用 $elemMatch 运算符来指定嵌入文档数组的多个条件:

Content.find({"users": {$elemMatch: {"user": user.id, "stream": stream}}});

【讨论】:

  • 谢谢。实际上我已经尝试过了,但问题最终是我的模型中的一个错字。不过,感谢您确认这一点。
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 2023-03-20
  • 1970-01-01
  • 2016-10-09
  • 2021-08-24
  • 2017-08-21
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多