2016-03-04 70 views
0

正如您在標題中看到的,我想查詢項目,如果項目的數組類型字段包含指定的值與Mongoose。如何找到一個對象(或對象)如果一個數組字段包含值


我發現,蒙戈DB /貓鼬提供「$的」操作員找到數組對象的值。

但'$ in'操作符只在相反的情況下有用(如果值的字段在數組中,則查找值)。


下面是我寫的模型的一些代碼。

// scheme/item.js 
var mongoose = require('mongoose'); 
var model = new mongoose.Schema({ 

    item_id : Number, 

    name : String, 
    description : String, 

    assigned : [ Number ] 
}); 

module.exports = mongoose.model('item', model); 

我想要做的是,如果設置了用戶ID,找到item.assigned包含用戶ID的所有項目。

+0

你嘗試過'Item.find({assigned:userId})'嗎? – chridam

+1

@chridam我想你給了我一個正確的答案..什麼是救生員thx! – niah

回答

0

要獲得具有assigned這是不爲空,你需要使用$ne子句中的所有記錄:

item.find({assigned: {$ne: null}}); 
+0

對不起,但我想查找有一個數組字段包含一個值,但只有所有記錄不具有空字段。 這意味着該項目的字段不應該爲空,並且'包含一個值'。 – niah

+0

是的,抱歉,我不明白這個問題。 – nstoitsev

0
item.find({'$and' : [{item_id : {$eq: req.session.user_id}}, {'assigned ' : {'$in' : [req.session.user_id]}}]}) 

我認爲你可以使用$in,請閱讀鏈接:https://docs.mongodb.org/manual/reference/operator/query/in/#op._S_in

+0

我在你的評論後編輯了一些模型和解釋的數據。其實,Item.id在這個問題上並不相關(所以我編輯爲'item_id')。事實上,當用戶的id帶有一些對象(例如req.session.user_id)時,我想用這個值來查詢。對不起,忘記了:( – niah

+0

@niah我已經更新了我的答案。 – BlackMamba

0

隨着@chridam的評論,我發現'Item.find({assigned:user_id})'只是做我想要的。

相關問題