【问题标题】:MongoDB Find() issueMongoDB Find() 问题
【发布时间】:2013-07-24 10:46:01
【问题描述】:

我无法使用以下查询从 MongoDB 获取以下结果。

查询

db.usersessiondet.find({"session":{"lastAccess":1330059784}});

MongoDB 中的示例存储数据。

{ "Id" : "Id9017", "_id" : "Id9017", "expires" : 1330059785, "session" : "{\"lastAccess\":1330059784,\"cookie\":{\"originalMaxAge\":14400000,\"expires\":\"2013-01-20T21:57:07.659Z\",\"httpOnly\":true,\"path\":\"/\"},\"messages\":{\"comCt\":{\"timedifference\":0,\"comCt_bytime\":0,\"commet_user_Id1574\":[{\"id\":\"Id9017_1330059784685\",\"from\":\"Id9017\",\"message\":\"asdf\",\"self\":0,\"old\":1,\"sent\":1330059784}]}}}" }

我试过了

db.sample.find(); {“_id”:“Id9017”,“Id”:“Id9017”,“expires”:1330059785,“会话”:“{\”lastAccess\”:1330059784,\“cookie\”:{\“originalMaxAge\”: 14400000,\"expires\":\"2013-01-20T21:57:07.659Z\",\"httpOnly\":true,\"path\":\"/\"},\"messages\": {\"comCt\":{\"timedifference\":0,\"comCt_bytime\":0,\"commet_user_Id1574\":[{\"id\":\"Id9017_1330059784685\",\"from\": \"Id9017\",\"message\":\"asdf\",\"self\":0,\"old\":1,\"sent\":1330059784}]}}}" }

db.sample.find({"session.lastAccess":1330059784}});

没有结果返回。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您已经在 MongoDB 中存储了一个 JSON 编码的字符串

    {
        "Id" : "Id9017", 
        "_id" : "Id9017", 
        "expires" : 1330059785, 
        "session" : "{\"lastAccess\":1330059784,\"cookie\":{\"origina…
    

    不能像这样简单地查询 JSON 编码的字符串,因为 MongoDB 的查询语言并非旨在进入字符串进行查询。您确实需要将其存储为实际的字段名称/值,例如:

    {
        "Id" : "Id9017", 
        "_id" : "Id9017", 
        "expires" : 1330059785, 
        "session" : {
            "lastAccess": 1330059784,
            "cookie" : { "origina…
    

    如果您像这样正确存储数据,您的查询将起作用。

    【讨论】:

      【解决方案2】:

      改为点表示法:http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation

      db.usersessiondet.find({"session.lastAccess":1330059784}});
      

      【讨论】:

      • 不,它不工作。我已经试过了。db.usersessiondet.find({"session.lastAccess":1330059784}});它的返回空集。
      • > db.sample.find(); {“_id”:“Id9017”,“Id”:“Id9017”,“expires”:1330059785,“会话”:“{\”lastAccess\”:1330059784,\“cookie\”:{\“originalMaxAge\”: 14400000,\"expires\":\"2013-01-20T21:57:07.659Z\",\"httpOnly\":true,\"path\":\"/\"},\"messages\": {\"comCt\":{\"timedifference\":0,\"comCt_bytime\":0,\"commet_user_Id1574\":[{\"id\":\"Id9017_1330059784685\",\"from\": \"Id9017\",\"message\":\"asdf\",\"self\":0,\"old\":1,\"sent\":1330059784}]}}}" } >> > db.sample.find({"session.lastAccess":1330059784}); >
      • 因误读前置语音标记而投反对票?有些人真的需要了解错误是什么......
      猜你喜欢
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      相关资源
      最近更新 更多