как удалить элемент из массива в коллекции mongodb, используя mongoose [duplicate]

Другое решение состоит в создании ассоциативного массива с форматом даты и последующим переформатированием данных.

Этот метод полезен для даты, отформатированной беспорядочным способом.

Пример:

    mydate='01.02.12 10:20:43':
    myformat='dd/mm/yy HH:MM:ss';


    dtsplit=mydate.split(/[\/ .:]/);
    dfsplit=myformat.split(/[\/ .:]/);

    // creates assoc array for date
    df = new Array();
    for(dc=0;dc<6;dc++) {
            df[dfsplit[dc]]=dtsplit[dc];
            }

    // uses assc array for standard mysql format
    dstring[r] = '20'+df['yy']+'-'+df['mm']+'-'+df['dd'];
    dstring[r] += ' '+df['HH']+':'+df['MM']+':'+df['ss'];
10
задан VaidAbhishek 27 February 2013 в 22:29
поделиться

2 ответа

Это именно то, что делает оператор $pull, поэтому в оболочке вы можете использовать update, например:

db.clusters.update({}, 
    {$pull: {members: {tweetID: '5327010328645530500'}}}, 
    {multi: true})

Установите параметр multi, чтобы каждый документ обновлялся, а не только первый.

16
ответ дан JohnnyHK 19 August 2018 в 08:15
поделиться
  • 1
    получив следующую ошибку. Cannot apply $pull/$pullAll modifier to non-array – VaidAbhishek 27 February 2013 в 22:53
  • 2
    @VaidAbhishek Это означает, что у вас есть несколько документов в коллекции, где members не является массивом. – JohnnyHK 27 February 2013 в 22:56
  • 3
    Я не думаю, что это относится к моей коллекции. члены будут строго атрибутом типа массива кластера. Есть ли способ сделать это, используя агрегацию! – VaidAbhishek 27 February 2013 в 23:01
  • 4
    @VaidAbhishek Ты уверен? Даже если members является null в документе, который вызовет эту ошибку, поскольку это не массив. – JohnnyHK 27 February 2013 в 23:05
  • 5
    Я не думаю, что это так :-( – VaidAbhishek 28 February 2013 в 09:31

Это приведет к удалению нескольких твитов в одном запросе, просто передайте массив в $ in: -

db.clusters.update({}, 
{$pull: {members: {$in: [ {tweetID: '5327010328645530500'},{"tweetID" : "2820402625046999289"} ] } } },

{multi: true})

Вышеуказанный метод не работает в mongoose, поэтому для mongoose do: -

db.clusters.update ({}, {$ pull: {members: [{tweetID: '5327010328645530500'}, {"tweetID": "2820402625046999289"}]}}),

4
ответ дан Amit Kumar 19 August 2018 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: