根据元素的位置删除mongoDB中的数组元素

adi*_*aur 4 arrays pull mongodb

实际上我需要根据它的位置从数组中删除一个元素.使用$流行,我们可以从顶部或底部移除元素(将其视为一个堆栈.在顶部0个元素)作为解释在这里.

我们也可以从阵列基于使用$拉作为解释数组中的元素的值删除元素在这里.

但我需要根据位置从数组中删除元素.那么我有什么方法可以做到这一点.

And*_*ich 8

来自文档:

{ $pull : { field : {$gt: 3} } } removes array elements greater than 3
Run Code Online (Sandbox Code Playgroud)

所以我想你现在可以做这样的事情:

{ $pull : { field : {$gt: 3, $lt: 5} } } // shoud remove elemet in 4 position 
Run Code Online (Sandbox Code Playgroud)

或者尝试使用位置运算符进行更新,我想应该是这样的:

  { $pull : "field.4" } 

  { $pull : {"field.$": 4}}
Run Code Online (Sandbox Code Playgroud)

这只是一个建议,因为我现在无法测试它.

更新:

似乎你不能一步到位就知道了(jira中有这样的错误)

但是您可以使用未设置的元素移除位置并使用null值拉取elemets:

{$unset : {"array.4" : 1 }}
{$pull : {"array" : null}}
Run Code Online (Sandbox Code Playgroud)