كيفية تحديد أداء عالي من 10 عناصر أكثر أو أقل ومن ثم معرفة متى قام المستخدم الحالي بعرض العنصر بالفعل في mongodb؟[مغلق]

StackOverflow https://stackoverflow.com//questions/23047119

سؤال

أرغب في تنفيذ ميزة كما هو الحال في youtube حيث يمكنك معرفة مقاطع الفيديو التي شاهدتها.

لا بد لي من الحلول:

  • قم بتخزين مقاطع الفيديو التي يتم تشغيلها في وحدة التخزين المحلية واستخدم هذه البيانات لتحديث واجهة المستخدم.(سيتطلب هذا تحميلًا عاليًا للبيانات في البداية إذا لم تكن البيانات موجودة بالفعل في مخزن الموقع وكان المستخدم قد شاهد الكثير من مقاطع الفيديو)
  • قم بتخزين البيانات في جدول بالطبع، وبعد الحصول على نتائج الاستعلام، احصل على كل معلومات الفيديو المتعلقة بالمستخدم الحالي.هذه الطريقة تتطلب الكثير من الاستفسارات في رأيي.

ماذا قد تقترح؟

هل كانت مفيدة؟

المحلول

قم بتخزين البيانات في جدول بالطبع، وبعد الحصول على نتائج الاستعلام، احصل على كل معلومات الفيديو المتعلقة بالمستخدم الحالي.هذه الطريقة تتطلب الكثير من الاستفسارات في رأيي.

لا أرى كيف أن ذلك يتطلب الكثير من الاستفسارات، فأنت تحتاج فقط إلى اثنين:واحد "عادي" والآخر يستخدم $in:

على افتراض مجموعة videos { _id, title, description, uploader, date, ... } ومجموعة userRecentVideos { userId, videoIds : [1, 912, 234234, ... ] },

هذا سوف يفعل:

var recent = db.userRecentVideos.find({"userId" : myUserId})[0].videoIds;
var videoInfo = db.videos.find({"_id" : {$in : recent}});

وبدلاً من ذلك، يمكنك كشف أ getVideoInfos نقطة نهاية HTTP التي تقبل قائمة المعرفات وترجع قائمة بمعلومات تعريف الفيديو.

ال videoIds يجب أن يكون له حجم ثابت ويجب تهيئته لجميع الأصفار أو شيء من هذا القبيل حتى لا ينمو المصفوفة طوال الوقت.

إذا كنت تريد حقًا تخزين السجل بأكمله، فمن الأفضل عدم استخدام مصفوفة مضمنة ولكن جعلها مجموعة روابط كما يلي:

videoHistory { _id, userId, videoId }

ضع الفهرس {_id, userId}, ، ويمكنك الحصول على أحدث مقاطع الفيديو التي تم تشغيلها لكل مستخدم، على افتراض _id هو مفتاح رتيب مثل معرف الكائن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top