我有一个集合,我承认从1 db导出并导入到另一个。
我在该系列中有一个名为' seqNo'这只是保持文件的运行计数,并在导入过程中导入了重复的seqNo值。
我现在正在尝试,弄清楚如何遍历集合中的文档,在1之后更新文档,并使用该seqNo的递增计数器。
我一直在阅读文档,看看如何使用递增的数字插入,但看起来更像是一个函数,并且不确定如何通过更新来执行此操作。
https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/
我在哪里,看起来更像是一件永恒的东西,而不是我真正想做的事情。
答案 0 :(得分:1)
使用此找到我的答案。
在mongo shell中,首先为计数器设置初始值。
def find_roster(num_input):
global cursor
cursor.execute("""SELECT num, firstname, surname, duty FROM active WHERE num='%s'""" %(num_input))
rows = cursor.fetchall()
dbi.close()
for results in rows:
rosterList.insert("end", results)
return rows
numLabel=Label(root, text="Employee #")
numLabel.grid(row=0,column=0)
findButt=Button(root, text="Find", width=12, command=find_roster)
findButt.grid(row=1, column=5)
num_input=StringVar()
num_input=Entry(root,textvariable=num_input)
num_input.grid(row=0,column=1)
只需输入变量名并按回车即可随时在mongo shell中查看此计数器。
var counter = 0
> counter
现在,创建一个0
函数并随时迭代计数器。
forEach
我花了几次尝试才意识到我确实需要db.questions.find({}).forEach(function(doc){
var = counter + 1;
db.questions.update({ _id: doc._id }, { $set: { seqNo: counter }});
})
更新部分的限定符。没有它,它没有更新任何东西。