根据元素位置删除mongoDB中的数组元素
实际上我需要根据元素的位置从数组中删除一个元素。使用 $pop 我们可以从顶部或底部删除元素(将其视为堆栈。顶部的第 0 个元素),如下所述 这里。
我们还可以使用 $pull 根据数组中元素的值从数组中删除元素,如下所述 此处。
但我需要根据位置从数组中删除元素。那么我有什么办法可以做到这一点吗?
Actually I need to remove an element from the array based on its position. Using $pop we can remove element from top or bottom (considering it as a stack. 0th element at top) as explained here.
We can also remove element from array based on the value of the elements in the array using $pull as explained here.
But I need to remove element from the array based on position. So is there any way I can do this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从文档:
所以我想你现在可以做这样的事情:
或者尝试使用 位置运算符,我想应该是这样的:
这只是一个建议,因为我现在无法测试它。
更新:
似乎你无法一步到位(有这样的 jira 中的错误)
但是您可以使用位置中未设置的元素来删除并拉取具有空值的元素:
From documentation:
So i suppose that you can do somethig like this for now:
Or try update using position operator, i suppose shoud be something like this:
It is only a suggestion, because i can't test it right now.
Update:
Seems you cant do it right know in one step(there is such bug in jira)
But you can remove using unset element in position and that pull elemets with null value:
这就是如何使用最新的 mongodb v4.2 做到这一点,丑陋但有效
That is how possible to do that with latest mongodb v4.2, ugly but working
这是您的答案: MongoDB 从集合中提取数组元素
首先从某个文档的数组中删除特定元素,您需要识别该元素。例如,我有一个包含数组的文档,该数组的每个元素都是一个对象:
因此,让我们从
_permissions.view
数组中删除值为“153579099841888257”的profile_id
。在这里,我们
profile_id
,在_permissions 中使用“153579099841888257”值.view
数组Here's your answer: MongoDB pull array element from a collection
To remove specific element from an array of some document first you need to identify this element. For instance I have a document with array and every element of this array is an object:
So let's remove
profile_id
with "153579099841888257" value from_permissions.view
array.Here we go
profile_id
with "153579099841888257" value in the_permissions.view
array