sql >> Databáze >  >> NoSQL >> MongoDB

agregační rámec mongodb – Načte první pole dokumentu z vnořeného pole

Nejjednodušší způsob, jak dosáhnout výsledku, je použít normální vyhledávací dotaz a $slice operátor:

db.collection.find( {_id: "User1"}, {"likes.sublikes": {$slice: 1}} )

Agregační rámec (jako v MongoDB 2.4.1) nepodporuje $slice nebo indexy polí (požadavky na funkce hlasování/sledování:SERVER-6074 a SERVER-4589 ).

Můžete to udělat v agregačním rámci pomocí $unwind , $group a $first operátor, např.:

db.collection.aggregate([
    { $match: {
         _id : "User1"
    }},
    { $unwind: "$likes.sublikes" },
    { $group: {
        _id: "$_id",
        like: { $first: "$likes.sublikes" }
    }},
    { $project: {
        _id: 0,
        "UserID": "$_id",
        "WebsiteName": "$like.WebsiteName"
    }}
])

Normální $slice by měla být nejvýkonnější možností.




  1. pymongo.errors.CursorNotFound:ID kurzoru '...' není na serveru platné

  2. Jak nainstalovat MongoDB jako službu na Windows 8.1

  3. Mongoidní dotaz podle hodnoty nebo výchozí hodnoty

  4. Nejlepší způsob, jak organizovat dílčí dokumenty v Mongo?