我对 Mongoose 有点陌生,不熟悉更复杂的查询,但本质上我试图选择具有两个匹配内部值的所有内部对象。
我试图选择所有已交互的内部消息对象(向同一个人发送和从同一个人接收)。例如,请注意“to”和“from”值如何匹配:
{
"_id" : ObjectId("567f225438dh626f3f0d2767"),
"messages" : {
"sent": [
{ "to": "Bob", ... }
],
"received": [
{ "from": "Bob", ... }
],
....
},
....
}
因此,我希望返回 { "from": "Bob", ... }
内部对象,以及所有其他收到的具有相应匹配“发送到”值的消息。我该如何处理这种查询?
最佳答案
我的解决方案使用简单的嵌套 for 循环:
var received = user.messages.received || [],
receivedCount = received.length,
sent = user.messages.sent || [],
sentCount = sent.length,
results = [];
for (var r = 0; r < receivedCount; r++) {
for (var s = 0; s < sentCount; s++) {
if (sent[s] && sent[s].to &&
received[s] && received[s].from &&
sent[s].to === received[r].from) {
results.push(received[s]);
}
}
}
关于node.js - 如何在 Mongoose 文档中选择具有匹配内部值的内部对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029761/