亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

循環遍歷集合中的所有文檔和每個文檔中的數組,以將數組值與項目匹配

循環遍歷集合中的所有文檔和每個文檔中的數組,以將數組值與項目匹配

慕絲7291255 2021-06-01 13:02:46
我有一個具有以下結構的 MongoDB 集合:/* 1 */{    "_id" : ObjectId("5cdb24b41a40ae58e6d690fd"),    "versions" : [         ObjectId("5cdb24b41a40ae58e6d690fe")    ],    "releases" : [],    "monetization" : [],    "owner" : "testuser",    "name" : "test-repo-2",    "repoAddress" : "/testuser/test-repo-2",    "repoKey" : null,    "__v" : 0}/* 2 */{    "_id" : ObjectId("5cdb23cb1a40ae58e6d690fa"),    "versions" : [         ObjectId("5cdb23cb1a40ae58e6d690fb"),         ObjectId("5cdda9c54e6d0b795a007960")    ],    "releases" : [         ObjectId("5cdda9c54e6d0b795a00795c")    ],    "monetization" : [],    "owner" : "testuser",    "name" : "test-repo-1",    "repoAddress" : "/testuser/test-repo-1",    "repoKey" : null,    "__v" : 2,    "createdAt" : ISODate("2019-05-16T18:19:49.159Z"),    "updatedAt" : ISODate("2019-05-16T18:19:49.252Z")}我需要遍歷集合中的所有文檔以及它們的版本數組,以查找特定的以將其與項目匹配。我需要用 NodeJS 來做這件事,但現在我正在從 mongoshell 嘗試它。我正在嘗試使用forEach()和$in操作符來做到這一點。db.projects.find().forEach(    function () {        {            versions: {                $in: ['5cdb24b41a40ae58e6d690fe']            }        }    });但是每次我收到以下回復時:Script executed successfully, but there are no results to show.我這樣做正確嗎?
查看完整描述

1 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

您可以嘗試多種解決方案,例如:


1)您可以在查找查詢中添加過濾器:


db.getCollection('debug').find({"versions":{"$in":[ObjectId("5cdb24b41a40ae58e6d690fe")]}})

這將直接返回您正在尋找的對象。


2)如果你不想通過過濾器而真正查詢所有文檔并自己過濾它們,你可以嘗試以下方法:


db.getCollection('debug').find({}).forEach(doc => {


     doc.versions.forEach(v => {


         if(v.toString() === "ObjectId(\"5cdb24b41a40ae58e6d690fe\")") {

               print("match");

         }


     });        


});


查看完整回答
反對 回復 2021-06-03
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號