[英]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.