nano-banana-experimental_2 / mongodb_queries.md
LogicGoInfotechSpaces's picture
Ensure ai_edit_last_date is stored as string (DD/MM/YYYY format) and add MongoDB queries documentation
416edc3

MongoDB Queries for media_clicks Collection

Database: admin (or your admin database name)

Collection: media_clicks


1. Find documents with ai_edit_last_date field

Find all documents that have ai_edit_last_date

db.media_clicks.find({ ai_edit_last_date: { $exists: true } })

Find documents with specific ai_edit_last_date

// Find by exact date (format: DD/MM/YYYY)
db.media_clicks.find({ ai_edit_last_date: "12/12/2025" })

Find documents with ai_edit_last_date in date range

// Find documents with dates in December 2025
db.media_clicks.find({ 
  ai_edit_last_date: { 
    $regex: /^\\d{2}\/12\/2025$/ 
  } 
})

Find documents with ai_edit_last_date NOT null/empty

db.media_clicks.find({ 
  ai_edit_last_date: { 
    $exists: true, 
    $ne: null, 
    $ne: "" 
  } 
})

2. Check if ai_edit_complete field exists

Find documents that HAVE ai_edit_complete field

db.media_clicks.find({ ai_edit_complete: { $exists: true } })

Find documents that DO NOT have ai_edit_complete field (old data)

db.media_clicks.find({ ai_edit_complete: { $exists: false } })

Find documents where ai_edit_complete is 0 (new users who haven't used model yet)

db.media_clicks.find({ ai_edit_complete: 0 })

Find documents where ai_edit_complete is greater than 0 (users who have used models)

db.media_clicks.find({ ai_edit_complete: { $gt: 0 } })

3. Combined Queries

Find documents with both fields

db.media_clicks.find({ 
  ai_edit_complete: { $exists: true },
  ai_edit_last_date: { $exists: true }
})

Find documents missing either field (old data)

db.media_clicks.find({ 
  $or: [
    { ai_edit_complete: { $exists: false } },
    { ai_edit_last_date: { $exists: false } }
  ]
})

Find users who have used models (ai_edit_complete > 0) with their last date

db.media_clicks.find({ 
  ai_edit_complete: { $gt: 0 },
  ai_edit_last_date: { $exists: true }
})

4. Count Queries

Count documents with ai_edit_last_date

db.media_clicks.countDocuments({ ai_edit_last_date: { $exists: true } })

Count documents with ai_edit_complete field

db.media_clicks.countDocuments({ ai_edit_complete: { $exists: true } })

Count documents without ai_edit_complete (old data)

db.media_clicks.countDocuments({ ai_edit_complete: { $exists: false } })

Count users who have used models (ai_edit_complete > 0)

db.media_clicks.countDocuments({ ai_edit_complete: { $gt: 0 } })

5. Aggregation Queries

Get statistics for ai_edit_complete

db.media_clicks.aggregate([
  {
    $group: {
      _id: null,
      total_users: { $sum: 1 },
      users_with_field: {
        $sum: { $cond: [{ $ifNull: ["$ai_edit_complete", false] }, 1, 0] }
      },
      users_without_field: {
        $sum: { $cond: [{ $ifNull: ["$ai_edit_complete", false] }, 0, 1] }
      },
      avg_ai_edit_complete: { $avg: "$ai_edit_complete" },
      max_ai_edit_complete: { $max: "$ai_edit_complete" },
      min_ai_edit_complete: { $min: "$ai_edit_complete" }
    }
  }
])

Get users by ai_edit_complete range

db.media_clicks.aggregate([
  {
    $group: {
      _id: {
        $switch: {
          branches: [
            { case: { $eq: ["$ai_edit_complete", null] }, then: "No field (old data)" },
            { case: { $eq: ["$ai_edit_complete", 0] }, then: "0 (new, not used)" },
            { case: { $lte: ["$ai_edit_complete", 5] }, then: "1-5 uses" },
            { case: { $lte: ["$ai_edit_complete", 10] }, then: "6-10 uses" },
            { case: { $gt: ["$ai_edit_complete", 10] }, then: "10+ uses" }
          ],
          default: "Unknown"
        }
      },
      count: { $sum: 1 }
    }
  },
  { $sort: { _id: 1 } }
])

Get latest ai_edit_last_date for each user

db.media_clicks.find(
  { ai_edit_last_date: { $exists: true } },
  { 
    userId: 1, 
    ai_edit_last_date: 1, 
    ai_edit_complete: 1 
  }
).sort({ ai_edit_last_date: -1 })

6. Update Queries (if needed to fix old data)

Add default ai_edit_complete = 0 to documents missing it

db.media_clicks.updateMany(
  { ai_edit_complete: { $exists: false } },
  { $set: { ai_edit_complete: 0 } }
)

Set ai_edit_last_date based on updatedAt for old documents

// Note: This converts updatedAt to DD/MM/YYYY format
// Run this carefully as it modifies data
db.media_clicks.find({ 
  ai_edit_last_date: { $exists: false },
  updatedAt: { $exists: true }
}).forEach(function(doc) {
  var date = doc.updatedAt;
  var formatted = date.getDate().toString().padStart(2, '0') + '/' + 
                  (date.getMonth() + 1).toString().padStart(2, '0') + '/' + 
                  date.getFullYear();
  db.media_clicks.updateOne(
    { _id: doc._id },
    { $set: { ai_edit_last_date: formatted } }
  );
})

7. Find by userId (ObjectId)

Find specific user by userId

// Replace with actual ObjectId
db.media_clicks.find({ 
  userId: ObjectId("693652b3f8683fd35b75448a") 
})

Find user and check if fields exist

db.media_clicks.findOne(
  { userId: ObjectId("693652b3f8683fd35b75448a") },
  { 
    userId: 1,
    ai_edit_complete: 1,
    ai_edit_last_date: 1,
    categories: 1,
    updatedAt: 1
  }
)

8. Find by Category

Find users who used specific category with ai_edit fields

db.media_clicks.find({
  "categories.categoryId": ObjectId("69368d62b95a6c2a75920505"),
  ai_edit_complete: { $exists: true }
})

Quick Test Queries

Check if field exists in sample document

db.media_clicks.findOne({}, { 
  userId: 1, 
  ai_edit_complete: 1, 
  ai_edit_last_date: 1 
})

Get sample of documents with and without fields

// With fields
db.media_clicks.find({ ai_edit_complete: { $exists: true } }).limit(5)

// Without fields (old data)
db.media_clicks.find({ ai_edit_complete: { $exists: false } }).limit(5)