簡體   English   中英

貓鼬查詢與$ near $或其他字段

[英]Mongoose query with $near $or other field

我試圖通過在不同的字段上執行查詢$或包括有問題的$ near查詢來返回文檔。

架構

locationSchema{
    ...
    beacon: String,
    access_point: String,
    gps: [],
    ...
}

locationSchema.index({ gps: '2dsphere' });

詢問

locations.find({
    '$or': [
        {
            gps: {
                '$near': {
                    '$geometry': {
                        type: 'Point',
                        coordinates: [
                            13.1313131,
                            -4.444444
                        ]
                    },
                    '$maxDistance': 50,
                    distanceField: 'distance',
                    spherical: true
                }
            }
        },
        {
            access_point: '88:A6:BB:26:95:11'
        },
        {
            access_point: '88:A6:C6:26:CC:21'
        }
    ]
},
function(err,locations){
    //DosomethingwithfoundLocations
});

如果僅使用$near輸入執行查詢,則將按預期返回一個位置;如果僅使用access_point的列表進行查詢, access_point返回一個位置,但兩個查詢都在同一位置運行時,則不會返回時間。

我假設這是一個錯誤,但是無論如何,我可以使這種查詢工作嗎?

謝謝

根據文檔,這不受支持。 您可以在此處了解更多信息:

$ or支持地理空間子句,但Near子句具有以下例外(near子句包括$ nearSphere和$ near)。 $ or不能與其他子句一起包含Near子句。

但是,您可以使用geoWithin並傳入center運算符以實現相同的目標。 請記住,盡管geoWithin不會對結果數組進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM