V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
ilaipi
V2EX  ›  MongoDB

一个奇怪的问题,帮忙看下

  •  
  •   ilaipi · 2018-04-04 11:39:52 +08:00 · 3385 次点击
    这是一个创建于 2207 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有张(个)表(集合)users,其中两个字段 name&hospital。hospital 是另一个集合的 id,这里存的是字符串形式。
    我在查询的时候,用 user.hospital,会说是无效的 ObjectId。到 users 表里来查,出现这样的结果,该怎么查问题呢?



    TIPS:用 hospital 和 name 两个字段查,结果完全不重合的。两个姓王的,但不是一个人。
    5 条回复    2018-04-04 13:37:44 +08:00
    geying
        1
    geying  
       2018-04-04 12:54:35 +08:00
    第一句话我看了三遍才看清楚
    另外我没看懂的是你拿什么去哪里查?
    你在 user 表里保存的字符串 hospital
    如果要在 hospital 查应该 find({_id:ObjectId("xxxxxxxxxxxxx")})

    不知道是不是说的这个问题,是我这回会迷糊呢还是理解能力有问题
    ilaipi
        2
    ilaipi  
    OP
       2018-04-04 13:01:36 +08:00
    @geying 我是在 mongo shell script,查询 users 表,关联查询对应的 hospital。然后碰到了无效的 objectid 错误。

    然后就去找为什么这个 id 会出错。先从 users 中查 hospital 是这个值的,就发现了这样奇怪的问题。
    ilaipi
        3
    ilaipi  
    OP
       2018-04-04 13:03:57 +08:00
    现在知道为什么了,还是不可见字符的原因。

    第二个查询 id 的前面莫名多了个不可见字符。一开始用的 robo 3T,这个字符显示不出来。后来用 NoSQLBooster for MongoDB,打印出来的 hospital 字段开头有个特殊字符,现在处理掉了,没有截图了。
    geying
        4
    geying  
       2018-04-04 13:23:01 +08:00
    @ilaipi ... 好吧 一开始我就觉得 但是我以为你是没用 ObjectId 因为在 spring-data-mongodb 里查 id 不需要
    解决了就好
    ilaipi
        5
    ilaipi  
    OP
       2018-04-04 13:37:44 +08:00
    @geying 嗯嗯,谢谢啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   910 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:38 · PVG 04:38 · LAX 13:38 · JFK 16:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.