具有多个memberIds的Mongo结果集

时间:2016-09-16 18:35:00

标签: mongodb meteor

我正在使用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"
    ]
  }
]

1 个答案:

答案 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