Node.js 在mongodb中查找chats数组中对象值的所有匹配项
我正在开发一个聊天应用程序,我被一个查询卡住了。我的聊天记录存储在一组对象中。我想获取与对象值的键匹配的聊天记录。我正在使用mongoose库查询mongodb。请帮我解决这个问题 我的聊天模式是:Node.js 在mongodb中查找chats数组中对象值的所有匹配项,node.js,mongodb,express,Node.js,Mongodb,Express,我正在开发一个聊天应用程序,我被一个查询卡住了。我的聊天记录存储在一组对象中。我想获取与对象值的键匹配的聊天记录。我正在使用mongoose库查询mongodb。请帮我解决这个问题 我的聊天模式是: chats: [ { sentFrom: 'user1', sentTo: 'athlete1', message: 'hi' }, { sentFrom : 'user2', sentTo: 'athlete1', message: 'h
chats: [
{
sentFrom: 'user1',
sentTo: 'athlete1',
message: 'hi'
},
{
sentFrom : 'user2',
sentTo: 'athlete1',
message: 'hi athleyte'
}
]
我想找到sentFrom值为“user1”的所有聊天记录
这是我的,它不工作。请尝试筛选:
let result = chats.filter(chat => chat.sentFrom === 'user1');
从你的文件中
您正在对整个集合进行匹配,并且您的条件是chats.sentFrom应该等于user1,这就是为什么,
如果任何其他文档在这种情况下具有类似类型的数据,它将返回2个文档以筛选出数组,您必须使用聚合使用$filter
db.test.aggregate([
{ $match: {_id: ObjectId("5f87fec2e80b410a20c6819a")}},
{ $project: {
chats: {$filter: {
input: '$chats',
as: 'chat',
cond: {$eq: ['$$chat.sentFrom', "user1"]}
}}
}}
])
_id是您试图传入的ObjectId()?