簡體   English   中英

使用 mongoose 查詢 MongoDB 中的特定子文檔

[英]querying specific sub documents in MongoDB using mongoose

我一直在手動嘗試 Mongo 文檔中的幾種方法,但它似乎沒有解決我的問題。 這是我的數據結構供參考

"loopback": [
        {
            "_date": "some date",
            "dutTestParams": [],
            "_id": "5f680665dfbfb74e78cae175",
            "paramId": "dummyid",
            "jtagApbStatus": "true",
            "dutYaml": "dummy_yaml",
            "dutSequenceId": "dummy_sequence",
            "dutGitVersion": "1.0.1",
            "guiVersion": "1.0",
            "projectId": "alphacore",
            "jobId": "id",
            "pvt": "dummypvt",
            "rate": 1,
            "refclk": 1,
            "channelLoss": 1,
            "voltage1": 1,
            "voltage2": 0.5,
            "voltage3": 0.5,
            "temp": 10,
            "txwidth": 8,
            "rxwidth": 8,
            "name": "loopback",
            "data": [
                {
                    "onLane": [
                        1
                    ],
                    "_id": "5f680675dfbfb74e78cae17c",
                    "chpid": "chip1",
                    "loopbackname": "BER",
                    "loopbackvalue": 0,
                    "laneid": 1,
                    "iteration": 1
                },
                {
                    "onLane": [
                        1
                    ],
                    "_id": "5f680675dfbfb74e78cae17d",
                    "chipid": "chip2",
                    "loopbackname": "BER",
                    "loopbackvalue": 0,
                    "laneid": 1,
                    "iteration": 1
                },{....}, ....., {....}]  

基本上我有一個父文檔。 測試數據存儲在父標題文檔中。 此數據與測試有關,因此不一定必須是 BER。 它可以是其他測試點。 此外,它還包含測試中測試的所有芯片。

我可以在查詢后過濾數據,這很簡單。 但是,有什么方法可以進行特定查詢嗎? 我理想中想要的是能夠沿着這些方向做一些事情:

db.testdata.find({jobid:"some id", data.0.chipid:"chip1"})

所以查詢返回標題父文檔和只有具有chipid ==chip1 的子文檔。 當我沿着這些方向嘗試某些事情時,我得到了所有子文檔,這不是我想要的。

任何有經驗的幫助將不勝感激!

使用此查詢 -

db.collection.aggregate([
  {
    "$match": {
      jobId: "id"
    }
  },
  {
    "$unwind": "$data"
  },
  {
    "$match": {
      "data.chipid": "chip1"
    }
  }
])

Mongo Playground上試試

暫無
暫無

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

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