我必须在 action 集合中插入一个批处理,如下所示:
[
{
"userId": "57ee65fef5a0c032877725db",
"postId": "57f63ce196b01748e4712ed3",
"type": "like"
},
{
"userId": "57ee65fef5a0c032877725db",
"postId": "57f7335223a76c0f780a44c5",
"type": "dismiss"
},
{
"userId": "57ee65fef5a0c032877725db",
"postId": "57f7335223a76c0f780a44c5",
"type": "dislike"
}
]
动作集合的模式如下:
const ActionSchema = new mongoose.Schema({
userId: mongoose.Schema.Types.ObjectId,
postId: mongoose.Schema.Types.ObjectId,
type: String
}, {
timestamps: true
});
但在插入之前我想确保这个特定的" userId"和" postId"在此数组中,db的action collection
中没有匹配的组合。由于用户只能针对特定帖子执行单个操作,并由其他用户发布。
答案 0 :(得分:1)
'use strict';
var mongoose = require('mongoose');
var accountTypeSchema = new mongoose.Schema({
name:{type:String, index: { unique: true }},
created: {type: Date, default: Date.now()},
deleted: {type: Number, default: 0}
});
module.exports = mongoose.model('AccountType', accountTypeSchema);
答案 1 :(得分:1)
Haroon你的问题不是自我解释,但我从你的场景中理解的是你需要一组独特的postId AND userId所以我认为你需要一个复合索引才能形成。如果方案错误,请告诉我
anySchema.index({field1: 1, field2: 1}, {unique: true});
对于你的情况,它将是
ActionSchema.index({postId: 1, userId: 1}, {unique: true});
它将确保您始终拥有一组独特的postId和userId
答案 2 :(得分:0)
你的意思是在给定的JSON中有一组唯一的postId,userId,没有postId,userId应该重复吗?