2016-03-23 5 views
0

У меня есть две модели - продукт и дизайн. Продукт имеет поле проектирования, которое принимает объект ObjectId.Запрос Mongoose для нулевого населения

Иногда, однако, при сохранении в MLAB дБ, дизайн не заканчивается экономии, но по-прежнему возвращает ObjectId, чтобы сохранить продукт, поэтому для некоторых продуктов, когда я запрашиваю

Product.find({...}); 

я вернусь продукт .design = someObjectId;

Но когда я заселить:

Product.find({...}).populate('design'); 

в результате product.design имеет нулевое значение, что имеет смысл. Теперь мне нужно исправить его. Я делаю запрос по всем Продуктам, заполняя «дизайн», а затем повторяя каждый продукт, чтобы увидеть, если его дизайн продукта === null, но с более чем 50 тыс. Документами продукта в db, я бы предпочел написать больше конкретный запрос, так:

Какой запрос мне нужно выполнить для возврата только продуктов с полями дизайна, которые заполняются до нуля?

ответ

0

Вы хотите сделать что-то подобное?

Product.find(design : { exists : false }).exec(function(err,doc){ 
    if (err) throw err; 
    //this will be docs with design set to null 
    console.log(doc) 
}) 

Обновлено: Сообщите мне, если это то, что вам нужно.

+0

Nope! поле дизайна уже заполнено ObjectId, оно просто не связано с существующим документом. Запуск Product.find ({design: ""}) возвращает [] –

+0

Все еще нет. Подумайте об этом так: затронутый продукт, когда я просто запускаю Product.find ({...}), выглядит так: {_id: 56902c2263b132b0976c14ad, создано: 2016-03-23T23: 07: 19.759Z, design: 5660effabb790c22059a4114} Но когда я запускаю Product.find ({...}). Populate ('design'), я возвращаюсь: {_id: 56902c2263b132b0976c14ad, создано: 2016-03-23T23: 07: 19.759Z, design: null} Потому что нет дизайна с этим ObjectId. Но в исходном запросе продукт все еще имеет поле дизайна. Поэтому проверка наличия {$ существует: false, $ ne: ""} не работает. –

+0

Есть ли причина, по которой вы не могли попытаться заполнить все документы, а затем запустить второй запрос, чтобы увидеть, какие документы имеют поле дизайна, равное null, а затем сделать ваши обновления там? Я не могу придумать лучший способ обработки, но у кого-то может быть лучшее решение. – user2263572

Смежные вопросы