2017-06-11 7 views
0

問題は次のとおりです。残ったObjectIdを削除するには?

私は写真スキーマのコレクションを持っていて、スキーマが好きです。写真の中にlikeArrayというObjectIdの配列があり、likes colletionからデータを入力します。

しかしlikesコレクションのlikeオブジェクトを削除すると、likeArrayのようなObjectIdはまだ存在します。

likeArrayでlike._idのインデックスを見つけようとしましたが、likeArray.splice(index、1)を使用しましたが機能しませんでした。

誰かが解決策を知っていますか?ここで

写真スキーマです:

var Like = mongoose.model('Like', new mongoose.Schema({ 
    user_id: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'user' 
    }, 
    photo_id: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'photo' 
    }, 
    created_at: {type: Date, default: Date.now} 
})); 
+0

スキームのコードを質問に追加してください:) –

+0

私はスキーマを追加しました。 –

答えて

1

代わりのスプライスあなたが$pull演算子を使用することができます。

var Photo = mongoose.model('Photo', new mongoose.Schema({ 
    photo_url: String, 
    photo_description: String, 
    user:{ 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'user' 
     }, 
     username: String, 
     profile_photo: String 
    }, 
    comments: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'comment' 
     } 
    ], 
    likes: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'like' 
     } 
    ], 
    created_at: {type: Date, default: Date.now} 
})); 

ここでは同様のスキーマです。それはどのようにそれがmongoシェルで見えるだろうか。

db.likes.remove({_id: like_oid}); 
db.photos.update({likes: like_oid}, {$pull: {likes: like_oid}}, { multi: true }); 
関連する問題