MongoDB是否在查询客户端操作?

时间:2016-05-11 07:07:52

标签: node.js mongodb mongodb-query

假设我有一份文件

{ "_id" : ObjectId("544946347db27ca99e20a95f"), "nameArray": [{"id":1 , first_name: "foo"}]

现在我需要使用$ push将数组推入nameArray。在这种情况下,文档如何更新。是否在客户端上检索文档并在客户端上进行更新,然后将更改反映到Mongodb数据库服务器。整个操作在Mongodb数据库中进行。

2 个答案:

答案 0 :(得分:3)

你在这里问的是MongoDB操作是否是客户端操作。简短的回答是

在MongoDB中,查询以documentation中提到的特定文档集合为目标,而collection是一组MongoDB文档,存在于单个database中。集合就是RDBMS中的表格。因此,如果查询以特定集合为目标,那么这意味着它们在数据库级别上执行,因此在服务器端执行。同样的事情适用于data modificationaggregation操作。

有时,您的操作可能涉及客户端处理,因为MongoDB没有提供实现您想要的开箱即用的方法。一般来说,当您想要修改集合中的文档结构或更改字段的类型时,您只需要那些类型的处理。在这种情况下,您需要使用bulk operations检索文档,执行修改

答案 1 :(得分:2)

See the documentation:

您的数组作为一个元素插入到现有数组中。如果数组不存在,则创建它。如果目标不是数组,则操作失败。

没有任何声明像“将元素重新发送给客户并在那里更新”。因此,操作完全在数据库服务器端完成。我不知道任何像你描述的那样有效的操作。除非您链接查询,否则修改客户端中的项目和更新。但这些是两个独立的操作,而不是一个单独的命令。