簡體   English   中英

貓鼬在引用的子文檔數組中查找

[英]Mongoose find in array of referenced subdocuments

我正在嘗試查找來自ip的某些訪問。訪問模式如下所示:

var VisitSchema = new Schema({
visitId:        String,
ip:             [{ type: Schema.Types.ObjectId, ref: 'VisitorIp' }]
});
mongoose.model('Visit', VisitSchema);

ip模式如下所示:

var VisitorIpSchema = new Schema({
ip:             String,
country:        String
});
mongoose.model('VisitorIp', VisitorIpSchema);

當我嘗試運行特定IP的正常查找時:

Visit.find({ip.ip:myIp}))
.populate('ip')
.exec(function(err, visits){
  console.log(visits)
})

它返回一個空數組。 mongo數據庫中的所有記錄外觀和行為均正常。

請幫助我用盡了所有想法。

您可以采用的一種不太優雅的方法是在填充后進行查詢,即獲取所有訪問,使用查詢過濾器填充訪問的ip文檔,然后在執行查詢時需要手動過濾出沒有任何符合填充條件的IP文檔,例如:

Visit.find({})
    .populate('ip', null, { "ip": myIp } )
    .where('ip.ip').equals(myIp) /* where('ip.ip').in([myIp]) */
    .exec(function(err, visits){
        visits = visits.filter(function(doc){
            return visits.ip.length;
        })
        // do stuff with visits
    });

暫無
暫無

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

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