我正在使用Meteor / Mongo和Typescript / Javascript。
我正在开发一款聊天应用。我从Mongo得到了一个结果集。
const chats: Mongo.Cursor<Chat> = Chats.find(
{ memberIds: 'J65'},
{
sort: { lastMessageCreatedAt: -1 },
transform: this.transformChat.bind(this),
fields: { memberIds: 1, lastMessageCreatedAt: 1 }
}
);
这将返回J65的聊天记录。
问题
是否可以拥有多个memberIds?即返回多个匹配ID的结果
更多信息
我尝试过这个没有成功,即使有匹配(但没有错误),它也没有返回任何内容。
let registeredIds: String[] = ['J65', 'J66'];
...
{ memberIds: registeredIds },
这就是数据库中的内容:
[ { "_id": "CHb8FSuGSfZMPhkrW", "memberIds": [ "P9", "J64" ] }, { "_id": "uMSJjHheTp7RhGdH3", "memberIds": [ "P9", "J65" ] }, { "_id": "e6ZMmRaJLPptF63z8", "memberIds": [ "P9", "J66" ] } ]
答案 0 :(得分:2)
您应该使用$in
运算符。
您的代码应如下所示:
const chats: Mongo.Cursor<Chat> = Chats.find(
{ memberIds: {$in:['J65','J66','J67']},
{
sort: { lastMessageCreatedAt: -1 },
transform: this.transformChat.bind(this),
fields: { memberIds: 1, lastMessageCreatedAt: 1 }
}
);
有关详细信息,请参阅docs。