我不知道在MongoDB 2.2上会向上插入嵌入式阵列的选项,因此您可能必须在应用程序代码中进行处理。
鉴于您希望将嵌入式数组视为虚拟集合,因此您可能需要考虑将数组建模为单独的集合。
您不能基于嵌入式数组中的字段值进行upsert,但是
$addToSet如果尚不存在嵌入式文档,则可以使用它来插入:
db.soup.update({ "tester":"tom"}, { $addToSet: { 'array': { "id": "3", "letter": "d" } }})这不适合您使用
idarray元素匹配的确切用例,但是如果您知道期望的当前值,则可能会有用。



