簡體   English   中英

當它所屬的集合未知時,MongoDB 查找 ObjectID?

[英]MongoDB lookup ObjectID when the collection it belongs to is unknown?

我目前使用的軟件只能運行聚合查詢或簡單的 find_one。 我是 mongodb 的新手,所以我很難弄清楚我是否可以做我想做的事情。

問題:
當對象 id 可能在許多集合之一中時,是否可以對對象 id 運行查找查詢?

設置:我有一個主集合,這個主集合本質上是一個適用於這個對象的其他 ObjectID 的數組。 該集合(稱為 Main_Config)由三個 ObjectID 組成。

  1. 客戶
  2. General_Config
  3. 角色配置

Client、 General_ConfigMain_Config都可以有一個強制模式,我希望Role_Config也有一個強制模式。 這就是問題發揮作用的地方, Role_Config可能采用 3 個或更多可能的模式。 我的想法是為每個可能的模式創建一個集合,但是如果我這樣做,我將不知道Role_Config ObjectID屬於哪個集合。 有沒有辦法查找可能存在於多個集合之一中的ObjectID

沒有findInAnyCollection()類型的函數。 在您的模型中,您必須手動編寫循環代碼並進行查找。

一種方法:在您的主要配置集合中,我們有包含此字段的文檔:

    otherIds = [ {coll: "ROLE", key: "5fb8057f08c09fb8dfe8d310"}, {coll: "GENERAL", key: "GENERAL_72f2b2922ed98800bd0e"}, ...]

把它們放在一起:

db.AA.drop();
db.BB.drop();
db.CC.drop();

db.AA.insert({_id:0, otherIds: [ {coll:"BB", key:0}, {coll:"BB", key:1}, {coll:"CC", key:2}]});

db.BB.insert({_id:0, foo:"bar", baz:"bin"});
db.BB.insert({_id:1, foo:"ion", baz:"kjlkj"});
db.BB.insert({_id:2, foo:"POPPO", baz:"UHUH"});
db.CC.insert({_id:0, data: "wfwefw"});
db.CC.insert({_id:1, data: "jj"});
db.CC.insert({_id:2, data: "mm"});

doc = db.AA.findOne();
doc['otherIds'].forEach(function(item) {
        var other = db[item['coll']].findOne({_id:item['key']});
        printjson(other);
    });

暫無
暫無

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

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