配列インデックスによってプル/削除する直接的な方法はありません。実際、これは未解決の問題http://jira.mongodb.org/browse/SERVER-1014であり、投票することができます。
回避策は、$ unset、次に$ pullを使用することです:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
更新:コメントの一部で述べたように、このアプローチはアトミックではなく、他のクライアントが2つの操作間で読み取りおよび/または書き込みを行うと、競合状態を引き起こす可能性があります。操作をアトミックにする必要がある場合は、次のことができます。
- データベースからドキュメントを読み取る
- ドキュメントを更新し、配列内のアイテムを削除します
- データベース内のドキュメントを置き換えます。ドキュメントを読んでから変更されていないことを確認するために、mongoドキュメントに現在のパターンが記述されている場合は更新を使用できます