mongoimport का डिफ़ॉल्ट व्यवहार मौजूदा दस्तावेज़ों को अधिलेखित करना नहीं होना चाहिए:JS शेल में, मैंने "testimport" संग्रह में एक दस्तावेज़ बनाया है
> db.testimport.save({_id:1, x:"a"})
> db.testimport.find()
{ "_id" : 1, "x" : "a" }
>
यहाँ फ़ाइल import.json की सामग्री है। इसमें 2 दस्तावेज़ होते हैं, एक अद्वितीय _id के साथ, और दूसरा डुप्लिकेट _id वाला।
import.json
{_id:1, x:"b"}
{_id:2, x:"b"}
एक नई टर्मिनल विंडो में, mongoimport चलाया जाता है:
$ ./mongoimport -d test -c testimport import.json -vvvvv
Wed Apr 4 19:03:48 creating new connection to:127.0.0.1
Wed Apr 4 19:03:48 BackgroundJob starting: ConnectBG
Wed Apr 4 19:03:48 connected connection!
connected to: 127.0.0.1
Wed Apr 4 19:03:48 ns: test.testimport
Wed Apr 4 19:03:48 filesize: 29
Wed Apr 4 19:03:48 got line:{_id:1, x:"b"}
Wed Apr 4 19:03:48 got line:{_id:2, x:"b"}
imported 2 objects
$
भले ही mongoimport का आउटपुट कहता है कि दो ऑब्जेक्ट आयात किए गए थे, _id:1 वाले दस्तावेज़ को अधिलेखित नहीं किया गया है।
> db.testimport.find()
{ "_id" : 1, "x" : "a" }
{ "_id" : 2, "x" : "b" }
>
यदि --upert ध्वज का उपयोग किया जाता है, तो _id:1 वाले दस्तावेज़ को अद्यतन किया जाएगा:
$ ./mongoimport -d test -c testimport import.json -vvvvv --upsert
Wed Apr 4 19:14:26 creating new connection to:127.0.0.1
Wed Apr 4 19:14:26 BackgroundJob starting: ConnectBG
Wed Apr 4 19:14:26 connected connection!
connected to: 127.0.0.1
Wed Apr 4 19:14:26 ns: test.testimport
Wed Apr 4 19:14:26 filesize: 29
Wed Apr 4 19:14:26 got line:{_id:1, x:"b"}
Wed Apr 4 19:14:26 got line:{_id:2, x:"b"}
imported 2 objects
$
JS शेल में, हम देख सकते हैं कि _id:1 वाले दस्तावेज़ को अपडेट कर दिया गया है:
> db.testimport.find()
{ "_id" : 1, "x" : "b" }
{ "_id" : 2, "x" : "b" }
>
क्या यह वह व्यवहार नहीं है जिसका आप अनुभव कर रहे हैं? उपरोक्त संस्करण 2.1.1-पूर्व के साथ परीक्षण किया गया था, लेकिन मुझे विश्वास नहीं है कि कुछ समय के लिए mongoimport कोड बदल गया है।