假设我有一份文件
{ "_id" : ObjectId("544946347db27ca99e20a95f"), "nameArray": [{"id":1 , first_name: "foo"}]
现在我需要使用$ push将数组推入nameArray。在这种情况下,文档如何更新。是否在客户端上检索文档并在客户端上进行更新,然后将更改反映到Mongodb数据库服务器。整个操作在Mongodb数据库中进行。
答案 0 :(得分:3)
你在这里问的是MongoDB操作是否是客户端操作。简短的回答是否。
在MongoDB中,查询以documentation中提到的特定文档集合为目标,而collection是一组MongoDB文档,存在于单个database中。集合就是RDBMS中的表格。因此,如果查询以特定集合为目标,那么这意味着它们在数据库级别上执行,因此在服务器端执行。同样的事情适用于data modification和aggregation操作。
有时,您的操作可能涉及客户端处理,因为MongoDB没有提供实现您想要的开箱即用的方法。一般来说,当您想要修改集合中的文档结构或更改字段的类型时,您只需要那些类型的处理。在这种情况下,您需要使用bulk operations检索文档,执行修改。
答案 1 :(得分:2)
您的数组作为一个元素插入到现有数组中。如果数组不存在,则创建它。如果目标不是数组,则操作失败。
没有任何声明像“将元素重新发送给客户并在那里更新”。因此,操作完全在数据库服务器端完成。我不知道任何像你描述的那样有效的操作。除非您链接查询,否则修改客户端中的项目和更新。但这些是两个独立的操作,而不是一个单独的命令。