我在mongoose和mongo shell中使用相同的语法,但两者都返回不同的值
以下是我的主要数据
"username" : "developer2",
"createdProjects" : [ ],
"registeredClasses" : [ ],
"friendRequest" : [
{
"id" : ObjectId("5a114dede58f4a05cb135d96"),
"username" : "chirag",
"_id" : ObjectId("5a114dfee58f4a05cb135d97"),
"Color" : "green",
"Status" : "Friend"
}
],
"messages" : [
{
"id" : ObjectId("5a109488b5454805a94f74ab"),
"User" : "Sting",
"_id" : ObjectId("5a114d51e58f4a05cb135d91"),
"texts" : [
{
"username" : "Sting",
"message" : "message",
"_id"ObjectId("5a114d51e58f4a05cb135d93")
},
{
"username" : "developer2",
"message" : "developer 2",
"_id"ObjectId("5a114dbbe58f4a05cb135d94")
}
]
},
{
"id" : ObjectId("5a114dede58f4a05cb135d96"),
"User" : "chirag",
"_id" : ObjectId("5a114e26e58f4a05cb135d9a"),
"texts" : [
{
"username" : "developer2",
"message" : "hi chira",
"_id"ObjectId("5a114e26e58f4a05cb135d9c")
},
{
"username" : "chirag",
"message" : "hi developer",
"_id"ObjectId("5a114e40e58f4a05cb135d9f")
}
]
}
],
"friends" : [
{
"username" : "Sting",
"_id" : ObjectId("5a114d38e58f4a05cb135d8f")
},
{
"username" : "chirag",
"_id" : ObjectId("5a114e16e58f4a05cb135d98")
}
]
这是我的mongo代码[工作绝对正常]
db.users.find({username:"chirag"},
{messages:
{ $elemMatch:
{ User:
"developer2" } }})
返回以下json数据
{
"_id" : ObjectId("5a114dede58f4a05cb135d96"),
"messages" : [
{
"id" : ObjectId("5a114c66e58f4a05cb135d8c"),
"User" : "developer2",
"_id" : ObjectId("5a114e26e58f4a05cb135d9b"),
"texts" : [
{
"username" : "developer2",
"message" : "hi chira",
"_id":ObjectId("5a114e26e58f4a05cb135d9d")
},
{
"username" : "chirag",
"message" : "hi developer",
"_id":ObjectId("5a114e40e58f4a05cb135d9e")
}
]
}
]
}
这正是我想要的 ,但是当我在mongoose中使用相同的方法时,它会返回不同的值
User.find({username:req.user.username},{messages:
{ $elemMatch: {
User:req.params.username} }},function(err,data){
if (err) {
throw err;
} else {
res.render("chat",{texts:data,user:founduser});
}
})
在数据
中返回此值 { _id: 5a114dede58f4a05cb135d96,
createdProjects: [],
registeredClasses: [],
friendRequest: [],
messages: [ { id: 5a114c66e58f4a05cb135d8c,
User: 'developer2',
_id: 5a114e26e58f4a05cb135d9b,
texts: [Array] } ],
friends: [] }
我第一个问题就是返回正确的数据以及我甚至没有要求的数据 和[Array]形式的文本,如何从中提取信息 请指出我在这里失踪的内容
答案 0 :(得分:0)
Mongoose默认为您提供完整的匹配文档, 如果要选择所需的信息,请使用projection。
示例:
// find each person with a last name matching 'Ghost',
// selecting the `name` and `occupation` fields
Person.findOne({
'name.last': 'Ghost',
}, 'name occupation', function (err, person) {
...
})