Как отслеживать изменения во встроенных документах в mongodb

#mongodb #node-mongodb-native #changestream

Вопрос:

У меня есть коллекция команд с образцом документа:

 {  "_id": {  "teamName": "BILALATI6449",  "tournamentId": "197831"  },  "tournamentName": "Amanora Cricket Championship 2021",  "player1": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player2": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player3": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player4": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player5": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player6": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player7": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player8": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player9": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player10": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "player11": {  "$oid": "6187d65514f9a67bcf9e8102"  },  "__v": 0 }  

Все объекты игроков имеют встроенные документы из pointotals. Как я могу отслеживать изменения в этих документах? Я попробовал этот код, но идентификатор не работает.

 const collection = client.db("mysquad11").collection("pointtotals");  const changeStream = collection.watch();  changeStream.on("change", (next) =gt; {  if (next.operationType === "update") {  console.log(next);  } });  

Может кто-нибудь помочь мне решить эту проблему. Я хочу только прослушать изменения встроенных документов, а не все документы коллекции pointTotals. Образец документа из коллекции pointtotals представляет собой:

 {  "_id": {  "$oid": "6188f5b5a153c12f050fa451"  },  "ids": {  "_id": "113069",  "tournamentId": "197831"  },  "playerName": "Abhijit Tupe",  "pointsTotal": 426,  "__v": 0, }  

Комментарии:

1. Что вы имеете в виду под » Я попробовал этот код, но идентификатор не работает».?

2. Он не отслеживает изменения во встроенном документе(из итоговых данных) в командном документе. Когда я изменяю изменения во встроенном документе в коллекции pointotal, на консоли ничего не печатается. Но, когда я вношу изменения в «$oid» любого игрока, следующий объект печатается на консоли.

3. Вы используете Mongoose ODM? Или это драйвер MongoDB NodeJS? Кроме того, включите образец коллекции, который вы пробуете, в свой пост.

4. @prasad_ Я использую драйвер nodejs для реализации потока изменений. Но для всего остального взаимодействия с базой данных я использую мангуста

5. Может быть, попробуйте также использовать API Мангуста для потока изменений.