2

Mongoose を使用して地理空間クエリを実行しており、populate() も使用したいと考えています。

populate() は Mongoose 固有のコマンドであり、executeDbCommand を使用すると機能しないというのは正しいですか? 私は次のことを試しました:

db.db.executeDbCommand({
    geoNear : "geopoints",
    near : [long, lat],
    populate : 'field', <-- doesn't work
    spherical : false, 
    distanceMultiplier:radPerMile,
    maxDistance : maxDis
}, function(err, result){
})

または

db.db.executeDbCommand({
    geoNear : "geopoints",
    near : long, lat],
    spherical : false, 
    distanceMultiplier:radPerMile,
    maxDistance : maxDis
}, function(err, result){
}).populate('field', function(err, res){
   //also didn't work
})

助言がありますか?

4

4 に答える 4

0

別の方法があります。クエリを使用して where 句を適用するには、このアプローチに変更する必要がありました: {}

property.aggregate().near(
{ 
    near:[parseFloat(req.params.longitude), parseFloat(req.params.latitude)], 
    distanceField:"distance", 
    spherical:true, 
    distanceMultiplier:3959,
    maxDistance:parseFloat(req.params.distance)/3959,
    query: {
        monthlyFee : { 
                                $gte: parseInt(req.params.minPrice), 
                                $lte: parseInt(req.params.maxPrice)
                    },
        numberOfBedrooms : { $gte: parseInt(req.params.minBedrooms) }
    }
})
.exec(function(err,docs) {
    if (err) res.send(err);

    property.populate( docs, { path: 'user', select: 'firstname lastname email' }, function(err,properties) {
        if (err) res.json(err);
        res.json(properties);
    });

});
于 2014-08-28T16:32:40.123 に答える