MongoDB Find()问题

时间:2013-07-24 10:46:01

标签: mongodb

我无法使用以下查询从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,“session”:“{\”lastAccess \“:1330059784,\”cookie \“:{\”originalMaxAge \“: 14400000,\ “过期\”:\ “2013-01-20T21:57:07.659Z \”,\ “仅Http \”:真,\ “路径\”:\ “/ \”},\ “消息\”: {\ “comCt \”:{\ “为TimeDifference \”:0,\ “comCt_bytime \”:0,\ “commet_user_Id1574 \”:[{\ “ID \”:\ “Id9017_1330059784685 \”,\ “从\”: \“Id9017 \”,\“message \”:\“asdf \”,\“self \”:0,\“old \”:1,\“sent \”:1330059784}]}}}“}

     

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

没有结果返回。

2 个答案:

答案 0 :(得分:2)

您已在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…

如果您正确存储数据,那么您的查询就可以正常运行。

答案 1 :(得分:-1)

代替点符号:http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation

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