Другое решение состоит в создании ассоциативного массива с форматом даты и последующим переформатированием данных.
Этот метод полезен для даты, отформатированной беспорядочным способом.
Пример:
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'];
Это именно то, что делает оператор $pull
, поэтому в оболочке вы можете использовать update
, например:
db.clusters.update({},
{$pull: {members: {tweetID: '5327010328645530500'}}},
{multi: true})
Установите параметр multi
, чтобы каждый документ обновлялся, а не только первый.
Это приведет к удалению нескольких твитов в одном запросе, просто передайте массив в $ 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"}]}}),
Cannot apply $pull/$pullAll modifier to non-array
– VaidAbhishek 27 February 2013 в 22:53members
не является массивом. – JohnnyHK 27 February 2013 в 22:56members
являетсяnull
в документе, который вызовет эту ошибку, поскольку это не массив. – JohnnyHK 27 February 2013 в 23:05