我正在制作一个网络应用。目前我将消息存储在消息列中,如下所示。
我有一个名为msges的列,我有关键和值详细信息的消息。我想创建一个我传递时间的函数,它会返回它的细节。谁能帮我?我可以获得单场但我不知道如何通过关键值获得它。这是我的功能。
function getMessageDetails(uname,time,callback){
global.users.find({"uname" : uname,"msges":time},
// {"friends.friendUname":1,_id:0},
{_id:0},
function(err,doc){
if(err){
callback(false,err,"Message not found.",null);
}else{
callback(true,null,"",doc);
}
}
);
}
提前致谢。 :)
答案 0 :(得分:1)
我个人会尝试对您的数据进行一些不同的建模,如果您有:
{
_id: "123123",
//...
friends: [
{ friendName: "etc..."}
],
msges : [
{
time: "16:25:02",
from: "alizia",
title : "hi buddy",
read: true
},
{
time: "12:25:02",
from: "bob",
title : "hi bobby",
read: false
}
]
}
您可以通过以下方式查询以下数据:
db.users.find({_id: "123123", "msges.time" : "16:25:02"}, { "msges.$.from" : 1 })
并将根据查询提取一个msg:
{
"_id" : "123123",
"msges" : [
{
"time" : "16:25:02",
"from" : "alizia",
"title" : "hi buddy",
"read" : true
}
]
}