2015-08-06 3 views
1

Я относительно новичок в mongoose и nodejs. И я пытаюсь взломать быстрый скрипт на стороне сервера в nodejs.MongoDb выбирает объекты из массива, где свойство объекта соответствует coondition

Я пытаюсь получить данные в виде массива объектов из mongoDb, используя mongoose.

Вот что моя схема выглядит -

var heatmapSchema = new Schema({ 
vuid: String 
coordinates: [ 
    { 
     x: Number, 
     y: Number, 
     c: Number, 
     timestamp: Number 
    } 
    ] 
}, {collection: collectionName}); 

Как вы можете видеть coordinates массив объектов. Я хочу, чтобы запросить MongoDB так что я получаю массив этих координат объектов, где c = 1 (c недвижимость в coordinate равен 1), то есть -

[ 
    { 
     x: 100, 
     y: 230, 
     c: 1, 
     timestamp: 1233312312 
    }, 
    { 
     x: 120, 
     y: 240, 
     c: 1, 
     t: 1233313425 
    } 
    ...... 
] 

Что бы лучшим способом для достижения этой цели в мангуста?

UPDATE

Ближайший я получил до сих пор использует ниже запрос -

heatmapModel.aggregate(
[ 
    { 
     $unwind: '$coordinates' 
    }, 
    { 
     $match: { 
      'coordinates.c': 1 
     } 
    }, 
    { 
     $project: { 
      '_id': 0, 
      'coordinates.x': 1, 
      'coordinates.y': 1, 
      'coordinates.c': 1, 
      'coordinates.timestamp': 1 
     } 
    } 
], 
function (err, result) { 

    if (err) { 
     console.log(err); 
     process.exit(1); 
    } 

    console.log(result); 
    process.exit(); 
} 
); 

Который дает мне следующий вывод -

[ { coordinates: { x: 601, y: 165, c: 1, timestamp: 1438840800424 } }, 
    { coordinates: { x: 484, y: 192, c: 1, timestamp: 1438840801211 } }, 
    { coordinates: { x: 484, y: 192, c: 1, timestamp: 1438840801388 } }, 
    { coordinates: { x: 414, y: 394, c: 1, timestamp: 1438840802378 } }, 
    ..... 
] 

Как избавиться ненужного ключа coordinates в json?

ответ

1

heatMap.find ({'coord.c': 1}); должно сработать.

+0

Nope. Это не работает. Это была очевидная первая вещь, которую я пробовал, но результат содержит значения, которые имеют 'coord.c = 0', а также – ShalomSam

+0

Не могли бы вы отправить нам, как вы делаете запрос? Это должно работать ... –

+0

Я обновил свой вопрос. Но если у вас был вопрос, как я выполнил ваш вышеупомянутый запрос - heatmapModel.find ({"coord.c": 1}). Exec (function (err, data) { if (err) { console.log (err); process.exit (1); } process.exit(); }); – ShalomSam

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