2014-02-22 40 views
3

參考我有2種型號的文件,貓鼬 - 查找所包含的子文件

var locationSchema = mongoose.Schema({ 
    name: String, 
    users: [{ 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'User' 
    }] 
}); 

var userSchema = mongoose.Schema({ 
    name: String, 
    email: String 
}); 

我想獲得具有特定用戶的所有位置。例如,以下數據,

Location  Users 
    A   [1,2,3] 
    B   [1,4,5] 
    C   [6] 

說,我想查找具有用戶#1的所有位置。我試過了,沒有工作

var locationModel = mongoose.model('Location', locationSchema); 

locationModel.find({ 
    users : { $in: user } 
}); 

locationModel.find({ 
    'users._id' : user._id 
}); 

locationModel.find({ 
    'users.$oid' : user._id 
}); 

locationModel.find({ 
    'users.id' : user._id 
}); 

有什麼想法嗎?

回答

1
locationModel.find({ 
    users : { $in: [some_user_id] } 
}); 
+0

看起來是正確的,但不幸的是,這傢伙正在使用Mongoose模型,因此它沒有嵌入。請參閱**第一個**架構定義。這些文件在另一個集合中。 –

+0

謝謝!有用。 – ZoM

+0

@zPhiNGpHoNG這可能與'_id'一起使用,但是如果它是*可能*想要查看[embedded documents](http://mongoosejs.com/docs/2.8.x/docs/embedded-documents.html)去適合你的用例。如果你能做到這一點,那麼從你的用戶架構查詢*相關信息會容易得多。 –