2014-12-03 28 views
1

我需要找到一個子文檔這是一個陣列內,基於自身的user_id屬性及其父母的添加my_id財產如何查找和基於parent屬性陣列中的更新的子文檔

這些是我的模式我模型(對話):

var listSchema = mongoose.Schema({ 
    user_id: Number, 
    property: Boolean, 
}); 

var conversationSchema = mongoose.Schema({ 
    my_id: Number, 
    list: [listSchema] 
}); 

通過貓鼬的文件和一些類似的問題在這裏瀏覽上做之後,我已經試過以下(這在我看來,像它應該工作):

Conversation.findOneAndUpdate(
    { "my_id": 8, "list.user_id": 16 }, 
    { 
     "$set": { 
      "list.$.property": false 
     } 
    }, 
    function(err, doc) { 
     console.error("Error:", err); 
     console.log("Doc:", doc); 
    } 
); 

但它給我這個輸出和文檔並不是在所有的更新:

Error: null 
Doc: null 

缺少什麼我在這裏?任何幫助表示感謝,提前致謝!

回答

0

我終於想通了事情的原委:

我保存的user_id屬性作爲字符串的MongoDB,所以我試圖改變查詢的這個部分:

"list.user_id": "16" 

代替:

"list.user_id": 16 

仍然沒有工作,但後來我想通了,我被定義USER_ID在listSchema號碼,所以我改變了對字符串:

var listSchema = mongoose.Schema({ 
    user_id: String, 
    property: Boolean, 
}); 

而現在它的作品,如果我用「16」或查詢16不要緊,我認爲貓鼬將試圖找到一個字符串現在不是一個數字就像是

之前做