1

Node with Mongoose で、コレクション内のオブジェクトを見つけたいと考えていますContent。と呼ばれるサブドキュメントのリストがusersあり、プロパティstreamuseraddedです。特定のユーザーの_idプロパティがusers.userフィールドにあるすべてのドキュメントを取得するためにこれを行います。

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

これは機能しているようです (ただし、ここで実際に機能しているかどうかはわかりません。ただし、次のように2 つのフィールド.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
}
4

1 に答える 1

1

$elemMatch 演算子を使用して、埋め込みドキュメントの配列に複数の基準を指定します。

Content.find({"users": {$elemMatch: {"user": user.id, "stream": stream}}});
于 2015-04-02T03:49:03.960 に答える