![](/img/trans.png)
[英]How to lookup in another collection with objectID of main collection in mongodb
[英]MongoDB lookup ObjectID when the collection it belongs to is unknown?
我目前使用的軟件只能運行聚合查詢或簡單的 find_one。 我是 mongodb 的新手,所以我很難弄清楚我是否可以做我想做的事情。
問題:
當對象 id 可能在許多集合之一中時,是否可以對對象 id 運行查找查詢?
設置:我有一個主集合,這個主集合本質上是一個適用於這個對象的其他 ObjectID 的數組。 該集合(稱為 Main_Config)由三個 ObjectID 組成。
Client、 General_Config
和Main_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.