{
"_id" : ObjectId("5888ae5f1495062544ac7951"),
"site" : "gfhfh",
"keywords" : {
"keyword 1" : {
"dailyranks" : {
"2017-01-28" : {
"rank" : 1,
}
**Dynamic data should add here by date **
}
}
}
}
我试图按日期插入关键字排名。我想每天添加关键字排名。但它不会仅插入更新日期和值。我在java中使用了以下代码。
for (DBObject dbo : result) {
DBObject keywordlist = (DBObject) dbo.get("keywords");
BasicDBObject a = new BasicDBObject();
for (String keyword : keywordlist.keySet()) {
DBObject rank = getRank();
BasicDBObject rankdate = new BasicDBObject(date, rank);
BasicDBObject aa = new BasicDBObject("dailyranks", rankdate);
a.append(keyword, aa);
}
coll.update(dbo, new BasicDBObject("$set", new BasicDBObject("keywords", a)), true, false);
}
答案 0 :(得分:1)
您似乎需要SELECT EARNED * SPLIT / 100
和keywords
的嵌入式阵列。
dailyranks
拥有此结构后,您将使用"keywords": [{
"keyword 1": {
"dailyranks": [{
"2017-01-28": {
"rank": 1,
}
}]
}
}]
运算符将新$push
插入到嵌入式doc数组中。
如果您尝试更换整个嵌入式阵列,则会使用rank
。