mongo morphia howto Безопасное удаление строки из массива String - PullRequest
0 голосов
/ 22 октября 2011

хорошо, у меня есть это (снова начинающий)
.

// ADD FRIEND TO FRIEND LIST   
Query<FriendList> query1 = mongo.createQuery(FriendList.class);   
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);  
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).add("friendList",buddyUuid,false);

Я вставляю друга в Array."FriendList" - это String Array.
Хотел бы иметь возможность реализовать удаление сейчас.

Могу ли я просто написать тот же код и заменить ".add" на removexxx ... что-то?Я думаю, что это хорошая идея, но, возможно, нет :)

@Entity
public class FriendList {

    @Id private ObjectId id;

    public Date lastAccessedDate;

    @Indexed(name="uuid", unique=true,dropDups=true)  
    private String uuid;

    @Indexed(value=IndexDirection.ASC, name="lowerCaseUserName", unique=true,dropDups=true)  
    public String lowerCaseUserName;

    public String passwordHash = "";

    List<String> friendList;

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public List<String> getFriendList() {
        return friendList;
    }

    public void insertFriend(String friend) {
        this.friendList.add(friend);
    }
//  @PrePersist void prePersist() {
//      lastAccessedDate = new Date();
//  }
}

1 Ответ

1 голос
/ 24 октября 2011
Query<FriendList> query1 = mongo.createQuery(FriendList.class);   
query1.field("lowerCaseUserName").equal(on.lowerCaseUserName);  
query1.field("passwordHash").equal(on.passwordHash);
query1.field("uuid").equal(on.uuid);
UpdateOperations<FriendList>up1=mongo.createUpdateOperations(FriendList.class).removeAll("friendList",buddyUuid);

Это должно удалить buddyUuid из списка.

Если вы можете гарантировать, что friendList содержит уникальные UUID, вы можете использовать метод removeFirst || removeLast.

removeFirst / Последняя / All

Надеюсь, это поможет!

...