簡體   English   中英

Mongodb / Mongoose:填充ObjectIds數組(引用)

[英]Mongodb/Mongoose: Filling Array of ObjectIds (references)

我正在運行一個mongodb(在MEAN環境中),其中包含兩個集合(用戶和書籍)。 這些集合之一(myusers)包含一個Objectid數組(對書籍集合文檔的引用),如下所示:

var UserSchema = new Schema({
    [...],
    externalids: [{type: Schema.Types.ObjectId, ref: 'Books', required: false}]
    }, {collection: 'myusers'});

在運行時,我想不斷用新書文檔的ID填充該數組(外部ID)。 這是我的方法:

var newBook = new Book({ ... });

        newBook.save(function (err){
                if (err){
                    //whatever  
                }else{
                    User.update({ _id: req.user._id }, { $set: { externalids: newBook._id }}, function(err){
                        //whatever       
                    });
                }
        }); 

不幸的是,我不能使用類似:

externalids: externalids.push(newBook._id)

我什至嘗試:

User.update({ _id: req.user._id }, { $push: { externalids: newBook._id }}

但這也無濟於事。 因此,該數組始終僅包含一個值(最新值),並且不會被填充。 有沒有一種快速的方法來附加更多值? 如果有比先讀取數組內容,將其存儲到本地臨時數組,追加新值並寫回整個數組更快的方法,那將是很好的...干杯

伊戈爾

嘗試使用$ addToSet而不是$ push來避免重復的ID。

User.update({ _id: req.user._id }, { $addToSet : { externalids: newBook._id }}

您可能遇到的問題是您以前使用$set來更新用戶。 這將最初將externalids創建為字符串,而不是數組,因此您之后不能在$push/$addToSet上使用$push/$addToSet 若要更正此問題,請嘗試首先將您的用戶externalid更新為數組:

User.update({ _id: req.user._id }, { $set : { externalids: [] }}

暫無
暫無

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

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