Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB聚合函数未按预期工作_Javascript_Mongodb_Mongoose - Fatal编程技术网

Javascript MongoDB聚合函数未按预期工作

Javascript MongoDB聚合函数未按预期工作,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我正在尝试显示用户a和任何其他用户之间的最后消息列表。以下是我到目前为止得到的信息,但让我解释一下以下查询的错误: 如果用户A向用户B发送消息“Test1”,用户B回复“Test2”,然后用户A回复“Test3”,则只显示Test2消息 “Test1”消息将首先显示,因为它是会话中的第一条消息,但从那时起,它将只显示用户B的消息 在本例中,我希望查询始终返回“Test3”。以下是我所拥有的: 我的模型: const MostRecentMessageSchema = new Schema({

我正在尝试显示用户a和任何其他用户之间的最后消息列表。以下是我到目前为止得到的信息,但让我解释一下以下查询的错误:

如果用户A向用户B发送消息“Test1”,用户B回复“Test2”,然后用户A回复“Test3”,则只显示Test2消息

“Test1”消息将首先显示,因为它是会话中的第一条消息,但从那时起,它将只显示用户B的消息

在本例中,我希望查询始终返回“Test3”。以下是我所拥有的:

我的模型:

const MostRecentMessageSchema = new Schema({
  to: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "user"
  },
  from: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "user"
  },
  conversation: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "conversation"
  },
  deletedBy: {
    type: [String]
  },
  date: {
    type: Date,
    default: Date.now
  }
});
我做错了什么?这是一本书。它应该会回来

  {
    from: "A",
    to: "C",
    number: 3,
    message: "A-C Test 4"
  },
但它回来了

  {
    from: "C",
    to: "A",
    number: 3,
    message: "A-C Test 3"
  },

我强烈建议包括一个小样本的数据和一个预期的结果,这实际上可以从该数据中获得。请注意,“模式”在这里并不重要。无论如何,
aggregate()
语句中没有任何内容关注模式。还要注意,您要求在此处使用
$lookup
,因此显然还有另一个包含相关文档的集合。为人们提供足够的数据,以便他们自己重现期望的结果。我添加了一个POC。您的POC似乎与您问题中的模式不匹配。在操场上的配置中,没有日期/时间字段,因此您按数字字段进行排序,但有多条消息具有相同的数字,因此
$first
操作符返回数组中恰好位于第一位的消息。如果给“A-C测试4”编号4,它将正确排序并给出所需结果。
  {
    from: "C",
    to: "A",
    number: 3,
    message: "A-C Test 3"
  },