【问题标题】:$geoWithin with $in or $or$geoWithin 与 $in 或 $or
【发布时间】:2013-09-08 03:01:27
【问题描述】:

我需要一些帮助来解决一个问题,事情很简单,我试过这个:

db.things.find({"position": {'$in': [{"$geoWithin":{"$center": [[10,10],10] } }, null ] } })

还有这个:

db.things.find({$or: [{"position":{"$geoWithin":{"$center":[[10,10],10]}}, "position": null}]})

它们都不起作用,我需要那个圈子中的所有“事物”或没有位置字段的“事物”。我必须补充一点,该查询仅返回没有该字段的文档,不包括圆圈中的文档。

我们将不胜感激。

谢谢

【问题讨论】:

    标签: mongodb geo


    【解决方案1】:

    我认为$in 不适合你,因为根据文档

    $in 选择字段值等于指定数组中任意值的文档

    您可以修改$or查询如下:

    db.things.find({"$or": [{"position":{"$geoWithin":{"$center":[[10,10],10]}}, "position":{"$exits": false}}]})
    

    希望这对你有用:)

    【讨论】:

    • 感谢您的回复,但我得到相同的结果,只返回没有位置字段的东西,很奇怪。
    • 我可以从您的问题中得出的结论是,您想要满足以下两个条件之一的记录:1:它们在您正在搜索的位置内或 2:其值为position 字段不存在如果这是要求,那么我认为提供的解决方案必须适合您:)
    • 你的逻辑没问题,我需要搜索电台中的和没有字段的,但我只得到最后一个。我认为问题在于 $geoWithin 运算符,因为如果我用 $or 测试其他字段并且它工作正常
    • 我刚刚再次阅读了您的评论,我发现 OR 与我的 AND 一词有所不同,我已尝试使用 $and,但它仍然不起作用
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2010-11-10
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多