sql >> Databasteknik >  >> NoSQL >> MongoDB

Ta bort arrayelementet i mongoDB baserat på elementets position

Från dokumentation:

{ $pull : { field : {$gt: 3} } } removes array elements greater than 3

Så jag antar att du kan göra något så här för nu:

{ $pull : { field : {$gt: 3, $lt: 5} } } // shoud remove elemet in 4 position 

Eller testa att uppdatera med positionsoperatorn , jag antar att det borde vara något sånt här:

  { $pull : "field.4" } 

  { $pull : {"field.$": 4}}

Det är bara ett förslag, eftersom jag inte kan testa det just nu.

Uppdatering:

Det verkar som om du inte kan göra det rätt i ett steg (det finns en sådan bugg i jira )

Men du kan ta bort genom att använda unset element i position och som drar elemets med nullvärde:

{$unset : {"array.4" : 1 }}
{$pull : {"array" : null}}


  1. MongoDB $indexOfArray

  2. Hur man hittar slumpmässiga poster i mongodb

  3. Varför är en enda Jedis-instans inte trådsäker?

  4. mongodb:kommer limit() att öka frågehastigheten?