簡體   English   中英

通過ID查找mongo子集合

[英]Find a mongo subcollection by id

我需要有關此查詢的幫助。 我如何找到子集合?

收款客戶

db.clientes.find({
    _id: ObjectId("587cc2d8704ae610d3741e6b")
}); {
    "_id": ObjectId("587cc2d8704ae610d3741e6b"),
    "razonSocial": "CREXELL",
    "cuit": "20-12121212-0",
    "vsat": [{
        "CPA": 8682,
        "IP": "149.126.35.61"
    }, {
        "CPA": 5500,
        "IP": "149.126.36.109",
        "_id": ObjectId("587cdb2af073f02a251361e8")
    }, {
        "CPA": 1234,
        "IP": "1902312",
        "_id": ObjectId("587d05fb930d504018ef8e01")
    }],
    "__v": 7
}

我需要得到像這樣的東西:

{
            "CPA": 5500,
            "IP": "149.126.36.109",
            "_id": ObjectId("587cdb2af073f02a251361e8")
        }

感謝:D

您可以使用聚合來實現此目的,但是您還需要知道子文檔數組中要查找的_id。

db.clientes.aggregate([
    // Find the document matching the _id only
    { $match: { "_id": ObjectId("587cc2d8704ae610d3741e6b") } },
    // Split all vsat array elements into separate documents
    { $unwind: "$vsat" },
    // Match only the case where the _id matches 587cdb2af073f02a251361e8
    { $match: { "vsat._id": ObjectId("587cdb2af073f02a251361e8") } },
    // Choose the elements we wish to return
    { $project: { "vsat": 1, "_id": 0 } }
])

結果是:

{ 
    "vsat" : { 
        "CPA" : 5500, 
        "IP" : "149.126.36.109", 
        "_id" : ObjectId("587cdb2af073f02a251361e8") 
    } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM